Qt 信号槽连接方式
2017-03-05 08:51
309 查看
Qt 信号槽通过connect连接,一般的写法
connect(ui->pushButton, SIGNAL(clicked(bool)), plugin_, SLOT(testSlot()));
tesSlot() 在头文件通过slots: 标识。最近看qtcreator的代码,发现有新写法、新用法
1. testSlot() 并不需要使用slots 标识,但需要使用下面connect 方法:
private:
void testSlot();
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::testSlot);通过使用& 取地址符,可连接任意方式定义的号码,甚至标志了signal的信号函数
2. plugin_ 是一个抽象类接口引用, testSlot()并不需要是plugin_的接口,只要在运行时存在于实现子类中就可以 connect 到该函数
// 父类
class IPlugin : public QObject
{
Q_OBJECT
public:
IPlugin(){}
~IPlugin(){}
};
// IPlugin 子类
class Plugin : public IPlugin
{
Q_OBJECT
public:
public slots:
void testSlot();
};
可这样使用:
IPlugin* pluging = new Plugin();
connect(ui->pushButton, SIGNAL(clicked(bool)), pluging, SLOT(testSlot()));
connect(ui->pushButton, SIGNAL(clicked(bool)), plugin_, SLOT(testSlot()));
tesSlot() 在头文件通过slots: 标识。最近看qtcreator的代码,发现有新写法、新用法
1. testSlot() 并不需要使用slots 标识,但需要使用下面connect 方法:
private:
void testSlot();
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::testSlot);通过使用& 取地址符,可连接任意方式定义的号码,甚至标志了signal的信号函数
2. plugin_ 是一个抽象类接口引用, testSlot()并不需要是plugin_的接口,只要在运行时存在于实现子类中就可以 connect 到该函数
// 父类
class IPlugin : public QObject
{
Q_OBJECT
public:
IPlugin(){}
~IPlugin(){}
};
// IPlugin 子类
class Plugin : public IPlugin
{
Q_OBJECT
public:
public slots:
void testSlot();
};
可这样使用:
IPlugin* pluging = new Plugin();
connect(ui->pushButton, SIGNAL(clicked(bool)), pluging, SLOT(testSlot()));
相关文章推荐
- Qt信号和槽连接方式的选择
- Qt跨线程信号和槽的连接(默认方式是直连和队列的折中)
- QT信号槽连接方式
- Qt信号和槽连接方式的选择
- qt 信号连接方式
- Qt信号和槽连接方式的选择
- Qt信号和槽连接方式的选择
- QT设计师中关于信号槽的连接仅仅是connect的连接,不能省略槽的声明
- Qt之信号连接,你Out了吗?
- Qt多个信号连接到一个槽,在槽中识别信号的发送者方法
- Qt多个信号连接到一个槽,在槽中识别信号的发送者方法(实验 可行)
- Qt之信号连接,你Out了吗?
- Qt多个信号连接到一个槽,在槽中识别信号的发送者方法
- Qt跨线程信号和槽的连接
- QT多个信号连接到一个槽
- 解决Qt中某类的槽无法连接另一类的信号的问题
- Qt的8个内建对话框&多个信号连接单个槽
- 贡献自己写的,在linux,arm上的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)
- 对QT 的信号连接类型的理解
- 关于Qt信号连接的问题