1
我創建了一個QTreeWidget與幾個QTreeWidgetItem。QTreeWidgetItem可編輯只允許輸入數字
這裏是我的代碼:
//Defined property tree
m_pPropertyTree = new QTreeWidget();
m_pPropertyTree->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_pPropertyTree->setColumnCount(2);
m_pPropertyTree->setHeaderLabels(QStringList() << "Property" << "Value");
//Update to property tree
//--geometry
QTreeWidgetItem *pGeometryItem = new QTreeWidgetItem(m_pPropertyTree);
pGeometryItem->setText(0, "geometry");
//X
QTreeWidgetItem *pXItem = new QTreeWidgetItem();
pXItem->setText(0, "X");
pXItem->setText(1, QString::number(geometry().x()));
pXItem->setFlags(pXItem->flags() | Qt::ItemIsEditable);
pGeometryItem->addChild(pXItem);
//Y
QTreeWidgetItem *pYItem = new QTreeWidgetItem();
pYItem->setText(0, "Y");
pYItem->setText(1, QString::number(geometry().y()));
pYItem->setFlags(pYItem->flags() | Qt::ItemIsEditable);
pGeometryItem->addChild(pYItem);
//Width
QTreeWidgetItem *pWidthItem = new QTreeWidgetItem();
pWidthItem->setText(0, "Width");
pWidthItem->setText(1, QString::number(geometry().width()));
pWidthItem->setFlags(pWidthItem->flags() | Qt::ItemIsEditable);
pGeometryItem->addChild(pWidthItem);
//Height
QTreeWidgetItem *pHeightItem = new QTreeWidgetItem();
pHeightItem->setText(0, "Height");
pHeightItem->setText(1, QString::number(geometry().height()));
pHeightItem->setFlags(pHeightItem->flags() | Qt::ItemIsEditable);
pGeometryItem->addChild(pHeightItem);
當雙上的項目點擊,我可以編輯該項目的文本。但是,我想只允許用戶在編輯時輸入數字。無論如何要這樣做?
它的工作,這很好,但我需要問你一些事情。有沒有什麼辦法可以在不創建新類的情況下實現呢?此外,這將適用於整棵樹,如果我想要應用於TreeWidget中的幾個項目,該怎麼辦。 – user2652023
如果你想申請一些項目,重載'createEditor'不是一個正確的方法。您會在[本文中]找到其他方法。(http://stackoverflow.com/questions/14538057/catch-esc-key-press-event-when-editing-a-qtreewidgetitem) – hyun
好的,謝謝我會找到另一種方式。 – user2652023