当前位置:   article > 正文

Qt日常学习_qt教程菜鸟

qt教程菜鸟

2022/07/28

使用Visual Studio2019 搭配 Qt5.14,可视化Qt界面使用QtDesigner。

若只使用代码来做界面太麻烦,效率低;只使用可视化界面进行拖拽效率高但无法实现全部功能。使用代码+可视化结合的方式能够实现绝大部分功能。

练习1:将进度条添加到状态栏中,创建label组件添加到状态栏中,在状态栏中创建进度显示,效果如图:

.h文件:

  1. private:
  2. QLabel* fLabCurFile;//状态栏显示当前文件的Label
  3. QProgressBar* progressBar1;//状态栏上的进度条
  4. QSpinBox* spinFontSize;//字体大小
  5. QFontComboBox* comboFont;//字体名称
  6. void iniUI();//代码实现UI的初始化

 .cpp文件:

  1. void Qt0::iniUI() {
  2. //状态栏上添加组件
  3. fLabCurFile = new QLabel;
  4. fLabCurFile->setMinimumWidth(150);
  5. fLabCurFile->setText("当前文件:");
  6. ui.statusBar->addWidget(fLabCurFile);//添加到状态栏
  7. //progressBar1 = new QProgressBar;
  8. progressBar1 = new QProgressBar;
  9. progressBar1->setMaximumWidth(200);
  10. progressBar1->setMinimum(5);
  11. progressBar1->setMaximum(50);
  12. progressBar1->setValue(ui.textEdit->font().pointSize());
  13. ui.statusBar->addWidget(progressBar1);//添加到状态栏
  14. //工具栏上添加组件
  15. spinFontSize = new QSpinBox;
  16. spinFontSize->setMinimum(5);
  17. spinFontSize->setMaximum(50);
  18. spinFontSize->setValue(ui.textEdit->font().pointSize());
  19. spinFontSize->setMinimumWidth(50);
  20. ui.mainToolBar->addWidget(new QLabel("字体大小 "));
  21. ui.mainToolBar->addWidget(spinFontSize);//spinbox添加到工具栏
  22. ui.mainToolBar->addSeparator();//分隔条
  23. ui.mainToolBar->addWidget(new QLabel("字体 "));
  24. comboFont = new QFontComboBox;
  25. comboFont->setMinimumWidth(150);
  26. ui.mainToolBar->addWidget(comboFont); //添加到工具栏
  27. setCentralWidget(ui.textEdit);
  28. //progressBar1-
  29. }
  30. //在构造函数中,调用函数,实现添加功能
  31. Qt0::Qt0(QWidget *parent)
  32. : QMainWindow(parent)
  33. {
  34. ui.setupUi(this);
  35. iniUI();//调用添加函数
  36. }

解决问题1:

QT显示界面中文乱码:

在头文件中添加如下代码:

  1. #if defined(_MSC_VER) && (_MSC_VER >= 1600)
  2. # pragma execution_character_set("utf-8")
  3. #endif

2022/7/29

对于visual studio中使用qt designer,不能直接使用右键->转到槽的方式设置槽函数,也不能使用 

 上述两种方式均不会将信号传递到槽中。

在vs中,使用下面这种方式更加有效:

其中&用来传递指针,槽函数正常编写。

代码:

  1. Qt4::Qt4(QWidget *parent)
  2. : QMainWindow(parent)
  3. {
  4. ui.setupUi(this);
  5. iniSignalSlots();
  6. }
  7. void Qt4::iniSignalSlots() {
  8. connect(ui.btnTotal, &QPushButton::clicked, this, &Qt4::on_btnCal_clicked);
  9. }
  10. void Qt4::on_btnCal_clicked() {
  11. QString str = ui.editNums->toPlainText();//获取文本框中的内容
  12. qDebug() << "str==" << str;
  13. int num = str.toInt();
  14. str = ui.editPrice->toPlainText();
  15. float price = str.toFloat();
  16. float total = num * price;
  17. str = str.sprintf("%.2f", total);
  18. ui.editPrices->setText(str);
  19. }

2022/08/03

在工具栏中嵌入ToolButton(图标式),单纯的在Qtdesigner中无法直接拖动,需要配合代码。

首先在Qtdesigner中拖出N个ToolButton,对于每个TBtn赋予相应的Action:

 

 在图标出选择相应的ico文件,至此完成Designer上的工作,下面需要在VS中创建相应的函数将其显示到工具栏中并编辑Action:

  1. //弹出菜单
  2. void Qt46::creatSelectionPopMenu() {
  3. //创建下拉菜单
  4. QMenu* menuSelection = new QMenu(this);//创建选择弹出式菜单
  5. ui.mainToolBar->addWidget(ui.tbtnListIni);
  6. ui.mainToolBar->addSeparator();//分隔条
  7. ui.mainToolBar->addWidget(ui.tbtnListClear);
  8. ui.mainToolBar->addSeparator();//分隔条
  9. ui.mainToolBar->addWidget(ui.tbtnListInsert);
  10. ui.mainToolBar->addSeparator();//分隔条
  11. ui.mainToolBar->addWidget(ui.tbtnListAppend);
  12. ui.mainToolBar->addSeparator();//分隔条
  13. ui.mainToolBar->addWidget(ui.tbtnListDelete);
  14. ui.mainToolBar->addSeparator();//分隔条
  15. menuSelection->addAction(ui.actSelALL);
  16. menuSelection->addAction(ui.actSelNone);
  17. menuSelection->addAction(ui.actSelInvs);
  18. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/835665
推荐阅读
相关标签
  

闽ICP备14008679号