0
#include <QApplication>
#include <QDebug>
#include <QDialog>
#include <QPushButton>
#include <QTreeWidget>
#include <QVBoxLayout>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QDialog dialog;
QVBoxLayout layout(&dialog);
QTreeWidget treeWidget;
treeWidget.insertTopLevelItem(0, new QTreeWidgetItem(&treeWidget));
QObject::connect(&treeWidget, &QTreeWidget::activated, [&treeWidget]() {
auto secondDialog = new QDialog(&treeWidget);
auto layout = new QVBoxLayout(secondDialog);
auto button = new QPushButton();
QObject::connect(button, &QPushButton::clicked, []() {
qDebug() << "button clicked";
});
layout->addWidget(button);
secondDialog->show();
});
layout.addWidget(&treeWidget);
dialog.show();
return app.exec();
}
當我通過按下Enter鍵激活QTreeWidget的項目時,嵌套對話框被創建並立即按下它內部的按鈕。我如何擺脫它?嵌套的QDialog會自動按下其中的一個QPushButton
你是什麼意思的「激活」,你點擊樹形控件? – jpo38
在樹形構件中選擇一個項目,然後按enter鍵。 –
如果您使用'dialog'而不是'treeWidget'作爲'secondDialog'的父項,該怎麼辦? – jpo38