如何在不使用信号插槽连接的情况下触发操作
How to trigger an action without using signal-slot connection?
触发Qt操作的常用方法是使用信号槽连接。既然我的函数不是槽,还有其他方法吗?比如一些直拨电话?
您可以使用Qt 5中的新QObject::connect
语法将信号连接到非插槽方法。它看起来像这样:
connect(action, &QAction::triggered, this, &MyClass::doSomeFunction);
在这个例子中,MyClass::doSomeFunction
不需要是一个时隙。这里有一个更深入的解释。
如果你真的想触发一个QAction,你可以直接这样做,而不需要使用信号或插槽:
action->trigger();
您可以添加将与信号连接的插槽,并可以在其中调用函数。
如果在main()中连接,它可以是这样的:
void windowAbout(){
QMessageBox aboutMB(QMessageBox::NoIcon, "About", "This is a weather forcast !");
aboutMB.setIconPixmap(QPixmap(":/icon.ico"));
aboutMB.exec();
}
int main(){
......
QObject::connect(aboutAction, &QAction::triggered, &app, &windowAbout);
......
}
相关文章:
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 在不知道套接字的情况下关闭网络连接
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 如何在没有侦听器的情况下创建 TCP 连接?
- 在不关闭连接的情况下接收整个页面
- 如何在不使用对象的情况下连接字符串、整数和浮点数
- 如何在不将其连接到终端的情况下运行'screen',以便我可以在C++ (qt) 应用程序中捕获输出?
- 在单元测试中测试连接丢失(在节俭的C++应用程序中或一般情况下)
- 我可以在不重新连接的情况下多次使用BIO_puts、BIO_read吗
- std::string和const char情况下的连接优先级
- C++ 我可以在没有计时器的情况下制作 boost::asio 连接插座吗?
- 提升异步 TCP 客户端在没有物理连接的情况下写入时不返回错误
- 在没有 MySql 连接器的情况下建立 MySQL 连接以进行C++
- 多线程服务器在不等待客户端连接的情况下退出
- 是否可以在没有接收器实例的情况下将信号连接到静态插槽
- 在没有连接的情况下调用C++Boost异步服务器处理程序
- 在不关闭连接的情况下,在循环中增强asio加密
- 在不轮询GetMessage()的情况下检测USB连接/断开连接
- Boost::asio::acceptor语言 - 在旧连接仍然打开的情况下接受新连接