Qt QPushButton按钮控件
2024-01-09 16:44:43
1 属性和方法
按钮除了可以设置显示文本之外,还可以设置图标
1.1 文本
可以获取和设置按钮上显示的文本
// 获取和设置按钮的文本
QString text() const
void setText(const QString &text);
该属性 既可以在Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改
1.2 图标
可以获取和设置按钮上显示的图标
// 获取和设置按钮的图标
QIcon icon() const;
void setIcon(const QIcon &icon);
该属性,既可以在Qt设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改
1.3 样式表
样式表可以设置包括文本颜色、背景色、边框、字体等很多样式
// 获取和设置样式表
// 这是继承自QWidget类的属性和方法
// 只要继承自QWidget类的控件,都有该属性
QString styleSheet() const;
void setStyleSheet(const QString &styleSheet);
样式表既可以在Qt设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改
1.4 信号
按钮在按下和抬起的过程中,会发射多个信号。
// 当按钮被点击(按下并抬起)时,发送该信号,其中带有一个默认参数
// 对于QPushButton 通常不需要传递这个默认参数
// 对于可选中/ 取消选中的按钮,比如复选框QCheckBox,单选框QRadioButton 可以通过该参数,获取其是否选中
void clicked(bool checked = false);
// 当按钮被按下时,发送该信号
void pressed();
// 当按钮被抬起时,发送该信号
void released();
2 实例
该实例演示,如何设置按钮的文本和图标,以及信号的使用,如下:
2.1 布局
在UI设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局
2.2 添加图标
首先添加资源文件,尹添加两个图标文件
2.3 添加样式表
在右侧的属性窗口中,或者在按钮上右键->【改变样式表…】,都可以打开编辑样式表的对话框如下,设置了按钮的字体颜色和背景渐变:
2.4 代码实现
void Widget::on_btnStart_clicked() {
QString s = ui->btnStart->text();
qDebug() << s;
if (s == "启动") {
// 则修改为停止
ui->btnStart->setText("停止");
ui->btnStart->setFont(QFont("Microsoft YaHei UI", 9));
ui->btnStart->setIcon(QIcon(":/res/stop.ico"));
ui->btnStart->setIconSize(QSize(24, 24));
} else {
// 则修改为启动
ui->btnStart->setText("启动");
ui->btnStart->setFont(QFont("Microsoft YaHei UI", 9));
ui->btnStart->setIcon(QIcon(":/res/start.ico"));
ui->btnStart->setIconSize(QSize(24, 24));
}
}
void Widget::on_btnConnect_clicked() {
QString s = ui->btnConnect->text();
qDebug() << s;
if (s == "连接") {
ui->btnConnect->setText("断开连接");
ui->btnSend->setEnabled(true);
} else {
ui->btnConnect->setText("连接");
ui->btnSend->setEnabled(false);
}
}
void Widget::on_btnSignal_clicked() {
qDebug() << "clicked...";
}
void Widget::on_btnSignal_pressed() {
qDebug() << "pressed...";
}
void Widget::on_btnSignal_released() {
qDebug() << "released...";
}
文章来源:https://blog.csdn.net/theRavensea/article/details/135458453
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!