QTreeWidget中如何重新定义展开的节点?
How to redefine a node expanding in a QTreeWidget?
我理解的qtreeview.cpp QTreeView中的expand方法负责展开节点。例如,它用于 expandOrCollapseItemAtPos 方法。我尝试在 QTreeWidget 中重新定义节点扩展:
#include <QApplication>
#include <QWidget>
#include <QTreeWidget>
#include <QMessageBox>
class MyTree : public QTreeWidget
{
public:
MyTree(QWidget *parent) : QTreeWidget(parent) {}
expandItem(const QTreeWidgetItem *item) {
QMessageBox msg;
msg.setText("EXPAND ITEM!!");
msg.exec();
QTreeWidget::expandItem(item);
}
expand(const QModelIndex &index) {
QMessageBox msg;
msg.setText("EXPAND!!");
msg.exec();
QTreeWidget::expand(index);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *mainWidget = new QWidget();
mainWidget->resize(200,100);
MyTree *myTree = new MyTree(mainWidget);
myTree->resize(200,100);
QTreeWidgetItem *node, *leaf;
node = new QTreeWidgetItem(myTree);
node->setText(0,"node");
leaf = new QTreeWidgetItem(node);
leaf->setText(0,"leaf");
mainWidget->show();
return a.exec();
}
但是展开节点时没有任何消息框。我试图评论 QTreeWidget::expandItem(item); 和 QTreeWidget::expand(index); 但扩展仍然有效。
如何重新定义在 QTreeWidget 中展开的节点?[=11=]
QTreeWidget::expand 和 QTreeWidget::expandItem 是非虚拟方法。所以重新定义是没有用的。我将使用带有 QTreeWidget::expanded/collapsed 信号的槽信号机制。
connect(this, SIGNAL(expanded(QModelIndex)), this, SLOT(myExpand(QModelIndex)));
这应该可以解决您的问题 -
connect(QTreeWidgetObject, SIGNAL(itemExpanded(QTreeWidgetItem*)), SLOT(slotItemExpanded(QTreeWidgetItem*)));
我理解的qtreeview.cpp QTreeView中的expand方法负责展开节点。例如,它用于 expandOrCollapseItemAtPos 方法。我尝试在 QTreeWidget 中重新定义节点扩展:
#include <QApplication>
#include <QWidget>
#include <QTreeWidget>
#include <QMessageBox>
class MyTree : public QTreeWidget
{
public:
MyTree(QWidget *parent) : QTreeWidget(parent) {}
expandItem(const QTreeWidgetItem *item) {
QMessageBox msg;
msg.setText("EXPAND ITEM!!");
msg.exec();
QTreeWidget::expandItem(item);
}
expand(const QModelIndex &index) {
QMessageBox msg;
msg.setText("EXPAND!!");
msg.exec();
QTreeWidget::expand(index);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *mainWidget = new QWidget();
mainWidget->resize(200,100);
MyTree *myTree = new MyTree(mainWidget);
myTree->resize(200,100);
QTreeWidgetItem *node, *leaf;
node = new QTreeWidgetItem(myTree);
node->setText(0,"node");
leaf = new QTreeWidgetItem(node);
leaf->setText(0,"leaf");
mainWidget->show();
return a.exec();
}
但是展开节点时没有任何消息框。我试图评论 QTreeWidget::expandItem(item); 和 QTreeWidget::expand(index); 但扩展仍然有效。 如何重新定义在 QTreeWidget 中展开的节点?[=11=]
QTreeWidget::expand 和 QTreeWidget::expandItem 是非虚拟方法。所以重新定义是没有用的。我将使用带有 QTreeWidget::expanded/collapsed 信号的槽信号机制。
connect(this, SIGNAL(expanded(QModelIndex)), this, SLOT(myExpand(QModelIndex)));
这应该可以解决您的问题 -
connect(QTreeWidgetObject, SIGNAL(itemExpanded(QTreeWidgetItem*)), SLOT(slotItemExpanded(QTreeWidgetItem*)));