【发布时间】:2018-07-08 10:38:47
【问题描述】:
我试图在下面的代码中使用 QTreeView 从 QComboBox 中选择项目“leaf2”。
我只想通过代码从文本中选择没有子项的项目。 (如果有孩子,就不能选择了)
如何选择没有子项的项或索引?
谁能帮我解决这个问题?
谢谢。
void Main::initView()
{
QStandardItemModel *model = new QStandardItemModel;
QStandardItem *root_item = model->invisibleRootItem();
// Build Model Items
QStandardItem *node_item = NULL;
node_item = new QStandardItem("Node");
node_item->setFlags(Qt::ItemIsEnabled);
root_item->appendRow(node_item);
QStandardItem *leaf_item = new QStandardItem("leaf1");
leaf_item ->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
node_item->appendRow(leaf_item );
leaf_item = new QStandardItem("leaf2");
leaf_item ->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
node_item->appendRow(leaf_item );
// Set Model to TreeViewComboBox
ui.cb_treevew->setModel(model);
ui.cb_treeview->setCurrentIndex(0); // "Node" is selected.
ui.cb_treeview->setCurrentIndex(1); // Nothing is selected.
ui.cb_treeview->setCurrentIndex(2); // Nothing is selected.
ui.cb_treeview->setCurrentIndex(3); // Nothing is selected.
}
这是我的 CTreeViewComboBox 代码。
CTreeViewComboBox::CTreeViewComboBox(QWidget *parent) : QComboBox(parent)
{
QTreeView* treeView = new QTreeView(this);
treeView->setEditTriggers(QTreeView::NoEditTriggers);
treeView->setSelectionBehavior(QTreeView::SelectRows);
treeView->setSelectionMode(QTreeView::SingleSelection);
treeView->setItemsExpandable(true);
treeView->header()->setVisible(false);
treeView->setWordWrap(true);
setView(treeView);
}
PS:我尝试选择以下项目,但无法正常工作。 :(
ui.cb_treeview->treeView()->setCurrentIndex(getModelIndexFromText("leaf2"));
【问题讨论】:
-
输入是什么?在对没有子节点的节点进行编号的树中,有很多可能性。你说一个节点是 1,另一个是 2 等等的标准是什么?
-
我只是想以任何方式通过代码选择TreeViewComboBox的项目。
-
有子节点的节点可以和没有子节点的节点同名吗?
-
不,他们不能。
-
看我的回答..
标签: c++ qt qtreeview qcombobox qstandarditemmodel