赞
踩
使用Visual Studio2019 搭配 Qt5.14,可视化Qt界面使用QtDesigner。
若只使用代码来做界面太麻烦,效率低;只使用可视化界面进行拖拽效率高但无法实现全部功能。使用代码+可视化结合的方式能够实现绝大部分功能。
练习1:将进度条添加到状态栏中,创建label组件添加到状态栏中,在状态栏中创建进度显示,效果如图:
.h文件:
- private:
- QLabel* fLabCurFile;//状态栏显示当前文件的Label
- QProgressBar* progressBar1;//状态栏上的进度条
- QSpinBox* spinFontSize;//字体大小
- QFontComboBox* comboFont;//字体名称
- void iniUI();//代码实现UI的初始化
.cpp文件:
- void Qt0::iniUI() {
- //状态栏上添加组件
- fLabCurFile = new QLabel;
- fLabCurFile->setMinimumWidth(150);
- fLabCurFile->setText("当前文件:");
- ui.statusBar->addWidget(fLabCurFile);//添加到状态栏
-
- //progressBar1 = new QProgressBar;
- progressBar1 = new QProgressBar;
- progressBar1->setMaximumWidth(200);
- progressBar1->setMinimum(5);
- progressBar1->setMaximum(50);
- progressBar1->setValue(ui.textEdit->font().pointSize());
- ui.statusBar->addWidget(progressBar1);//添加到状态栏
-
- //工具栏上添加组件
- spinFontSize = new QSpinBox;
- spinFontSize->setMinimum(5);
- spinFontSize->setMaximum(50);
- spinFontSize->setValue(ui.textEdit->font().pointSize());
- spinFontSize->setMinimumWidth(50);
-
- ui.mainToolBar->addWidget(new QLabel("字体大小 "));
- ui.mainToolBar->addWidget(spinFontSize);//spinbox添加到工具栏
-
- ui.mainToolBar->addSeparator();//分隔条
- ui.mainToolBar->addWidget(new QLabel("字体 "));
- comboFont = new QFontComboBox;
- comboFont->setMinimumWidth(150);
- ui.mainToolBar->addWidget(comboFont); //添加到工具栏
-
- setCentralWidget(ui.textEdit);
- //progressBar1-
-
-
- }
-
-
- //在构造函数中,调用函数,实现添加功能
- Qt0::Qt0(QWidget *parent)
- : QMainWindow(parent)
- {
- ui.setupUi(this);
- iniUI();//调用添加函数
-
- }
QT显示界面中文乱码:
在头文件中添加如下代码:
- #if defined(_MSC_VER) && (_MSC_VER >= 1600)
- # pragma execution_character_set("utf-8")
- #endif
对于visual studio中使用qt designer,不能直接使用右键->转到槽的方式设置槽函数,也不能使用
上述两种方式均不会将信号传递到槽中。
在vs中,使用下面这种方式更加有效:
其中&用来传递指针,槽函数正常编写。
代码:
- Qt4::Qt4(QWidget *parent)
- : QMainWindow(parent)
- {
- ui.setupUi(this);
- iniSignalSlots();
- }
- void Qt4::iniSignalSlots() {
- connect(ui.btnTotal, &QPushButton::clicked, this, &Qt4::on_btnCal_clicked);
- }
- void Qt4::on_btnCal_clicked() {
- QString str = ui.editNums->toPlainText();//获取文本框中的内容
- qDebug() << "str==" << str;
- int num = str.toInt();
- str = ui.editPrice->toPlainText();
- float price = str.toFloat();
- float total = num * price;
- str = str.sprintf("%.2f", total);
- ui.editPrices->setText(str);
- }
在工具栏中嵌入ToolButton(图标式),单纯的在Qtdesigner中无法直接拖动,需要配合代码。
首先在Qtdesigner中拖出N个ToolButton,对于每个TBtn赋予相应的Action:
在图标出选择相应的ico文件,至此完成Designer上的工作,下面需要在VS中创建相应的函数将其显示到工具栏中并编辑Action:
- //弹出菜单
- void Qt46::creatSelectionPopMenu() {
- //创建下拉菜单
- QMenu* menuSelection = new QMenu(this);//创建选择弹出式菜单
- ui.mainToolBar->addWidget(ui.tbtnListIni);
- ui.mainToolBar->addSeparator();//分隔条
- ui.mainToolBar->addWidget(ui.tbtnListClear);
- ui.mainToolBar->addSeparator();//分隔条
- ui.mainToolBar->addWidget(ui.tbtnListInsert);
- ui.mainToolBar->addSeparator();//分隔条
- ui.mainToolBar->addWidget(ui.tbtnListAppend);
- ui.mainToolBar->addSeparator();//分隔条
- ui.mainToolBar->addWidget(ui.tbtnListDelete);
- ui.mainToolBar->addSeparator();//分隔条
- menuSelection->addAction(ui.actSelALL);
- menuSelection->addAction(ui.actSelNone);
- menuSelection->addAction(ui.actSelInvs);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。