Qt无法手动连接到任何插槽(UI编辑器)
Qt can't connect to any slot manually (UI editor)
我正在学习使用QT。
为了易于编程,我使用UI-Editor。
问题
当我想连接我的qtreewidget时,它突然不想做任何事情。
我不想通过UI-Editor连接它,因为我(后来)想实现自己的插槽,而该插槽不会被编译器识别
(错误消息:didnt find slot ... in file 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
。这就是为什么您派生的类构造函数甚至都没有调用。
相关文章:
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 从Q_INVOKABLE功能或插槽中更改QQuick图像源
- 升压信号2将插槽传递到成员功能以断开连接
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- C++ 信号和插槽不工作:插槽不响应事件
- NS3 插槽混淆(需要帮助理解)
- QObject::连接无法将信号连接到*this*对象的插槽
- QT 插槽未在主线程上调用
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- 使用信号和插槽连接多个 UI 对象
- QACTION信号插槽中的无形UI
- Qt无法手动连接到任何插槽(UI编辑器)
- 将QGraphicsview信号连接到UI插槽
- 是否有可能让Qt Creators UI设计师为它无法识别的类创建插槽?
- 如何将ui文件类中的按钮连接到其他类中的插槽
- Qt UI 插槽不是由从基类继承的信号调用的
- Qt:使用信号和插槽从另一个类调用MainWindow::Ui