QT入门-自定义信号
1) 主窗口的子窗口:给当前项目添加一个C++类(QWidget为基类)。把这个类的头文件include进主窗口,然后在主窗口的私有变量里这样写:SubWidget subW;
想要通过主窗口的按钮打开子窗口的时候,把按钮的点击动作和主窗口的成员函数connect起来,这个成员函数执行的就是subW->show()。(当然也可以hide主窗口)。
2) 当想要点击子窗口的按钮来显示主窗口:
用到自定义信号。
在SubWidget类内自定义信号,前面要加signal关键字声明。加了signal关键字,编译器就知道这是信号,就无需实现了。
signal:
void sigSub();
/*
1.可以有参数
2.可以重载
3.返回值为void
4.发送信号:emit + 信号名
*/
sigSub这个信号属于SubWidget,因此子窗口能够把这个信号发出去。
在子窗口的构造函数这样写:connect(b1, &QPushButton::clicked, this, &SubWidget::myslot);
而:
void SubWidget::myslot()
{
//发送信号
emit sigSub();
}
表示发送信号。
在主窗口的构造函数里这么写:connect(&sb, &SubWidget::sigSub, this, &Widget::slotShowMe); 信号的发出者是子窗口, 信号为sigSub,接收者为主窗口,槽函数是主窗口的成员函数,内部可以自定义(比如show主窗口,hide子窗口)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!