QT控件事件与事件响应函数关联
2024-05-07
25
0
我们在上面的代码中,本来相对QLabel标签加一个点击事件了,但发现标签没有点击事件。
差评,MFC就是可以的。
所以,我们只能引入QPushButton控件来实现了。
#include "mainwindow.h"
#include <QApplication>
#include <qlabel.h>
#include <windows.h>
#include <qpushbutton.h>
DWORD WINAPI ThreadDo(LPVOID lp)
{
QLabel* plabel = ( QLabel*)lp;
for(int i=0;;i++)
{
// plabel->move(i%100,0);
Sleep(200);
}
}
void OnMyButton()
{
::MessageBoxA(NULL,"hello my button!","tips",MB_OK);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QLabel* plabel = new QLabel("站长漫谈-pnpon.com",&w);
plabel->move(100,100);
plabel->resize(200,30);
QPushButton* btn = new QPushButton("my button",&w);
btn->resize(100,50);
QObject::connect(btn,&QPushButton::clicked,OnMyButton);
w.resize(400,400);
w.show();
HANDLE h = CreateThread(NULL,0,ThreadDo,(LPVOID)plabel,0,NULL);
CloseHandle(h);
return a.exec();
}
我们在界面中多创建了一个按钮,类型为QPushButton,使用 QObject::connect来关联事件:
QObject::connect(btn,&QPushButton::clicked,OnMyButton);
可以看到,第一个参数是需要关联的控件指针。第二个参数是控件的事件类型。第三个是响应函数。
运行后结果如下: