最近发现Qt+VS开发GUI真是好用~~~~
各种控件随便拖拽,样式随心改变,关键是还好看。槽函数在designer里面设置完,在源文件直接写slots,真心的方便快捷。给大家种草一波(ToT)~~
================ 分割线 =====================
今天记录一个小trick,一般用Qt进行软件开发时,经常使用信号+槽的方式进行函数动作相应。方法一般有两种:
- 利用designer设置信号/槽函数后,源文件在slots里面直接写函数实现
- 直接使用程序connect函数,在源码里面添加关联
上述两种方法,对于一般的动作相应都能实现。但对于不同窗口之间的消息传递可能会有问题!例如,有窗口1和窗口2,点击窗口1中某按钮,窗口2中进行某函数动作。对于这种情况,我们常采用emit关键字来实现。
在窗口1的函数体中,先进性信号和槽函数声明:
class win1_class:public QWidget
{
// 信号声明区
signals:
// 声明信号 mySignal()
void mySignal();
// 声明信号 mySignal(int)
void mySignal(int x);
// 声明信号 mySignalParam(int,int)
void mySignalParam(int x,int y);
slots:
// 声明槽函数 mySlot()
void mySlot1();
};
void win1_class::mySlot1()
{
emit mySignal();
//emit mySignal(1);
//emit mySignal(1,2);
}
在窗口2的函数体中,进行信号和槽函数关联:
class win2_class:public QWidget
{
win1_class *app1= new win1_class;
slots:
void mySlot2();
// 信号与槽关联
connect(app1, SIGNAL(mySignal()), this, SLOT(mySlot2()));
};
void win2_class::mySlot2()
{
// 函数实现
}
以上仅为实现策略,若想从根本理解,还是看书去吧~~~