#include "QToolButtonDemo.h"
#include <QMenu>
#include <QAction>
#include <QMessageBox>
QToolButtonDemo::QToolButtonDemo(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
initForm();
signalSlotConnect();
}
// 初始化窗体
void QToolButtonDemo::initForm()
{
// 设置toolbutton可选择状态
ui.tlbDebug->setCheckable(true);
ui.tlbExtern->setCheckable(false);
ui.tlbLog->setCheckable(true);
ui.tlbParam->setCheckable(true);
ui.tlbProgram->setCheckable(true);
// 设置默认选中程序
ui.tlbProgram->setChecked(true);
ui.stackedWidget->setCurrentIndex(0);
// 设置拓展按键菜单
ui.tlbExtern->setPopupMode(QToolButton::InstantPopup);
auto externMenu = new QMenu(ui.tlbExtern);
auto controlAction = new QAction(QString::fromLocal8Bit("设备控制 "), externMenu);
auto videoAction = new QAction(QString::fromLocal8Bit("视频监控 "), externMenu);
auto systemCopyAction = new QAction(QString::fromLocal8Bit("系统备份 "), externMenu);
// 添加菜单
externMenu->addAction(controlAction);
externMenu->addAction(videoAction);
externMenu->addAction(systemCopyAction);
// 动作信号槽连接
connect(controlAction, SIGNAL(triggered()), this, SLOT(slotActionShow()));
connect(videoAction, SIGNAL(triggered()), this, SLOT(slotActionShow()));
connect(systemCopyAction, SIGNAL(triggered()), this, SLOT(slotActionShow()));
ui.tlbExtern->setMenu(externMenu);
}
// 信号槽连接
void QToolButtonDemo::signalSlotConnect()
{
connect(ui.tlbProgram, SIGNAL(clicked()), this, SLOT(slotToolButtonProgram()));
connect(ui.tlbDebug, SIGNAL(clicked()), this, SLOT(slotToolButtonDebug()));
connect(ui.tlbExtern, SIGNAL(clicked()), this, SLOT(slotToolButtonExtern()));
connect(ui.tlbParam, SIGNAL(clicked()), this, SLOT(slotToolButtonParam()));
connect(ui.tlbLog, SIGNAL(clicked()), this, SLOT(slotToolButtonLog()));
}
void QToolButtonDemo::slotToolButtonProgram()
{
selectToolButton(ui.tlbProgram);
}
void QToolButtonDemo::slotToolButtonDebug()
{
selectToolButton(ui.tlbDebug);
}
void QToolButtonDemo::slotToolButtonParam()
{
selectToolButton(ui.tlbParam);
}
void QToolButtonDemo::slotToolButtonLog()
{
selectToolButton(ui.tlbLog);
}
void QToolButtonDemo::slotToolButtonExtern()
{
selectToolButton(ui.tlbExtern);
}
void QToolButtonDemo::slotActionShow()
{
QMessageBox::information(this, QString::fromLocal8Bit("按键菜单演示"), QString::fromLocal8Bit("按键选择触发"), QMessageBox::Yes);
}
// 按键选择
void QToolButtonDemo::selectToolButton(QToolButton *pTlb)
{
if (ui.tlbProgram == pTlb)
{
ui.stackedWidget->setCurrentIndex(0);
ui.tlbProgram->setChecked(true);
ui.tlbDebug->setChecked(false);
ui.tlbParam->setChecked(false);
ui.tlbLog->setChecked(false);
ui.tlbExtern->setChecked(false);
}
else if (ui.tlbDebug == pTlb)
{
ui.stackedWidget->setCurrentIndex(1);
ui.tlbProgram->setChecked(false);
ui.tlbDebug->setChecked(true);
ui.tlbParam->setChecked(false);
ui.tlbLog->setChecked(false);
ui.tlbExtern->setChecked(false);
}
else if (ui.tlbParam == pTlb)
{
ui.stackedWidget->setCurrentIndex(2);
ui.tlbProgram->setChecked(false);
ui.tlbDebug->setChecked(false);
ui.tlbParam->setChecked(true);
ui.tlbLog->setChecked(false);
ui.tlbExtern->setChecked(false);
}
else if (ui.tlbLog == pTlb)
{
ui.stackedWidget->setCurrentIndex(3);
ui.tlbProgram->setChecked(false);
ui.tlbDebug->setChecked(false);
ui.tlbParam->setChecked(false);
ui.tlbLog->setChecked(true);
ui.tlbExtern->setChecked(false);
}
else if (ui.tlbExtern == pTlb)
{
ui.stackedWidget->setCurrentIndex(4);
ui.tlbProgram->setChecked(false);
ui.tlbDebug->setChecked(false);
ui.tlbParam->setChecked(false);
ui.tlbLog->setChecked(false);
ui.tlbExtern->setChecked(true);
}
}
QToolButtonDemo.zip
需积分: 0 42 浏览量
更新于2021-01-30
收藏 159KB ZIP 举报
在本项目"QToolButtonDemo.zip"中,我们将探讨如何使用Qt5的QToolButton类来创建一个定制的左侧选项卡界面,并通过QSS(Qt StyleSheet)进行样式美化。Qt5是一个强大的C++图形用户界面应用程序开发框架,而QToolButton是其中用于创建具有图标或文本的按钮控件,常用于工具栏或者选项卡式布局。
QToolButton不仅支持显示文字,还支持显示图标,这使得它非常适合用作选项卡。在创建选项卡时,我们可以通过设置QToolButton的text属性来添加文字标签,使用setIcon()方法添加图标,使界面更直观、更具视觉吸引力。
QToolButton的一个重要特性是它可以有三种不同的状态:正常、悬停和按下。通过QToolButton的setDown()、setDisabled()和setEnabled()方法,我们可以控制按钮的状态,使其在用户交互时呈现出相应的视觉反馈。
在界面设计中,QSS起着至关重要的作用。它是Qt中的CSS样式表,允许开发者自定义窗口、控件甚至动画的外观和行为。在QToolButtonDemo中,我们可以通过加载QSS样式表文件,使用诸如color、background-color、border等属性来改变按钮的颜色、背景、边框等样式。例如,可以设定不同状态下的按钮颜色,或者添加圆角效果,以实现更加现代和美观的界面风格。
为了将QToolButton整合到左侧选项卡布局中,我们需要使用Qt的布局管理器,如QVBoxLayout或QHBoxLayout。通过这些布局,我们可以方便地将按钮排列在所需的位置,同时确保界面在不同屏幕尺寸下都能自适应调整。此外,还可以利用QStackedWidget或QTabWidget来实现选项卡的切换功能,当用户点击不同的QToolButton时,对应的页面会显示出来。
代码实现过程中,首先需要在头文件中包含必要的Qt库,如#include <QtWidgets>。接着,定义一个主窗口类,继承自QMainWindow,并在构造函数中初始化QToolButton和布局。在槽函数中处理按钮的信号和槽,例如当按钮被点击时触发相应的行为。加载QSS文件并应用到界面元素上。
在"QToolButtonDemo"这个项目中,你将学习到如何结合QToolButton、QSS以及Qt的布局系统,创建出具有专业外观和用户体验的界面。这是一个很好的实践,能够提升你在Qt5界面设计和C++编程方面的能力。通过不断探索和实践,你将能构建出更多复杂且吸引人的应用程序。
进击的大海贼
- 粉丝: 1w+
- 资源: 209
最新资源
- 三菱PLC项目案例学习之PLC控制伺服或步进电机带动丝运行案例 器件:三菱FX1SPLC,威纶通触摸屏,48步进驱动器,伺服电机,丝杆滑台等 控制方式:PLC发脉冲给步进驱动器控制步进电机带动丝杆
- 北航智能自主系统.7z
- 开源风噪 matlab 代码及仿真数据
- 北航软件体系架构.7z
- “预防夏季中暑”知识讲座教案课件.pptx
- 幼儿园老师与家长的沟通技巧培训讲座教案课件.pptx
- 企业新员工职业道德培训教案课件.pptx
- “构建高效课堂,展现课堂魅力”教师培训教案课件.pptx
- “幼儿园教师礼仪”培训教案课件资料.pptx
- “夏季行车安全”讲座教案课件资料.pptx
- 昆仑通泰暖通空调中央空调控制组态程序,适用于绝大多数西门子方案暖通空调自控系统
- mongodb-windows-x86-64-6.0.19-signed.msi
- spring-series
- java大题啊实打实的
- java大题txt格式
- 基于CSS绘制的圣诞树网页元素