gpt4 book ai didi

c++ - Qt 无法手动连接到任何插槽(UI 编辑器)

转载 作者:太空宇宙 更新时间:2023-11-04 12:33:50 31 4
gpt4 key购买 nike

我正在学习使用 Qt。

为了简化编程,我使用了 UI-Editor。

问题

当我想连接我的 QTreeWidget 时,它突然不想做任何事情。

我不想通过 UI-Editor 连接它,因为我(稍后)想实现我自己的槽,编译器无法识别它(错误消息:没有在文件 ui_mainwindow.h 中找到插槽 ...,尽管插槽在 mainwindow.cpp 中定义并在 mainwindo.h 中声明)

所以这是我的连接代码:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{

//connects all the objects with the needed slots
QObject::connect(ui->treeWidget, &QTreeWidget::clicked, QApplication::quit);


ui->setupUi(this);
}

但是:当我单击 QTreeWidget 的任何项目时,它不会退出程序。

我绝对确定它是 QTreeWidget 而不是 QTreeView,我还使用 Qt 5.7 的 Linux (-->GNOME) 版本

此外,我没有收到任何警告/编译器错误。

因为我是 Qt 的新手,我可能发现了一个简单的错误,在这种情况下,抱歉 :P

最佳答案

实际上,QWidget 或其后代QMainWindow 中没有quit() 槽。

你应该使用 QCoreApplication::quit()相反。


下面,qApp 指的是QApplication实例:

Qt 4 语法:

QObject::connect(ui->treeWidget, SIGNAL(clicked(QModelIndex)), qApp, SLOT(quit()));

Qt 5 语法:

QObject::connect(ui->treeWidget, &QTreeWidget::clicked, QCoreApplication::quit);

QObject::connect(ui->treeWidget, &QTreeWidget::clicked, []{ QCoreApplication::quit(); });

更新

发现问题。检查main.cpp文件,您正在创建 QMainWindow 实例而不是 MainWindow。这就是为什么您的派生类构造函数甚至没有被调用的原因。

关于c++ - Qt 无法手动连接到任何插槽(UI 编辑器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562448/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com