2022/07/28
使用Visual Studio2019 搭配 Qt5.14,可视化Qt界面使用QtDesigner。
若只使用代码来做界面太麻烦,效率低;只使用可视化界面进行拖拽效率高但无法实现全部功能。使用代码+可视化结合的方式能够实现绝大部分功能。
练习1:将进度条添加到状态栏中,创建label组件添加到状态栏中,在状态栏中创建进度显示,效果如图:

.h文件:
private:QLabel* fLabCurFile;//状态栏显示当前文件的LabelQProgressBar* 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();//调用添加函数}
解决问题1:
QT显示界面中文乱码:
在头文件中添加如下代码:
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
# pragma execution_character_set("utf-8")
#endif
2022/7/29
对于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);
}
2022/08/03
在工具栏中嵌入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);
}



















