【问题标题】:qt QComboBox setView to QTreeView can not do setCurrentIndexqt QComboBox setView 到 QTreeView 不能做 setCurrentIndex
【发布时间】:2012-03-25 03:40:29
【问题描述】:

treecombobox.h

#ifndef TREECOMBOBOX_H
#define TREECOMBOBOX_H

#include <QComboBox>
#include "QAbstractItemView"
#include "QTreeView"

class TreeComboBox : public QComboBox
{
    Q_OBJECT
public:
    explicit TreeComboBox(QWidget *parent = 0);
    ~TreeComboBox();

protected:
    QTreeView* internalView;

signals:

public slots:

};

#endif // TREECOMBOBOX_H

treecombobox.cpp

#include "treecombobox.h"

TreeComboBox::TreeComboBox(QWidget *parent) :
    QComboBox(parent){

    this->internalView = new QTreeView( parent );
    this->setView( this->internalView );
    QAbstractItemModel* model = this->internalView->model();
    model->insertRows( 0, 2 );
    model->setData( model->index(0,0), "First" );
    model->setData( model->index(1,0), "Second" );
    this->view()->setCurrentIndex( model->index(1,0) );
}


TreeComboBox::~TreeComboBox(){
    if( this->internalView ){
        delete this->internalView;
        this->internalView = 0;
    }
}

我想显示第二个项目,但 qt 给了我第一个项目。 this->view()->currentIndex() 给了我正确的模型索引,但是小部件没有显示正确的内容。

我想要的是一个带有树视图弹出框的组合框。弹出框工作正常。唯一的问题是当我尝试在程序中自动选择一个项目时出错。

谁能告诉我怎么做?

【问题讨论】:

    标签: qt qtreeview qcombobox


    【解决方案1】:

    前段时间遇到同样的问题。

    可以提供下一个解决方案(基于原生 QComboBox 代码和一些互联网内容):

    TreeComboBox::presetIndex(QModelIndex index)
    {
    
            setRootModelIndex(index.parent());
            setModelColumn(index.column());
            setCurrentIndex(index.row());
            setRootModelIndex(QModelIndex());
            view->setCurrentIndex(index);
    }
    

    抱歉格式化,第一次,但仍然不知道如何在此处制作代码高亮。

    【讨论】:

    • 什么/如何/eeee?你从哪里得到这个 preestIndex 函数的索引?我在 QComboBox 中看不到任何给我该索引的信号...
    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多