QT自学笔记2

it2026-09-02  2

QT自学笔记2

事件处理机制

信号和槽 signal & slot。

对象a有一个信号signal:XXX(代表一个事件)对象b有一个槽slot:YYY(事件处理函数)事先把它们连接起来,connect(&a,XXX,&b,YYY);

示例

当按下pushButton时,显示Hello,World

查找官网文档找到pushButton的一个信号

void clicked(bool checked = false);

定义一个槽函数

头文件 private slots: int OnShowClicked(bool checked); //名字可以随便起,但变量名得一致 源文件 int MyWin::OnShowClicked(bool clicked) { ui.plainTextEdit->setPlainText("Hello,World"); return 0; }

将信号和槽连接起来,connect

connect(ui.pushButton, SIGNAL(clicked(bool)), this, SLOT(OnShowClicked(bool)) // bool后面不要添加变量名 );

connect失败

检查方法;bool ret = connect(&a,XXX,&b,YYY); 在调试状态下查看ret的值

常见错误:

当变量名写错时F7编译报错:xxx不是Ui::MyWinClass的成员SIGNAL和SLOT中,不可以加变量名,会导致connect失败槽函数没有用private slots修饰,编译报错

单行文本框QLineEdit

常用信号

void returnPressed() //当回车键被按下void textChanged(const QString &text) //当文本有变化时

登录界面案例

首先使用ui进行界面布局,之后再进行如下操作

头文件

private slots: int OnReturnPressed();

源文件

//使用弹出窗口,需要添加QMessageBox头文件 #include <QMessageBox> //在构造函数中添加connect() connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(OnBtnShow()) ); //点击OK键 int MyWin::OnBtnShow() { QString user = ui.editUser->text(); QString passwd = ui.editPassword->text(); if (user == "root" && passwd == "123456") { QMessageBox::information(this, "OK", "good input"); } else { QMessageBox::information(this, "Error", "bad input"); } return 0; }

效果图

最新回复(0)