3.手动撸界面和可视化托界面混合

参考视频:https://www.bilibili.com/video/BV1AX4y1w7Nt

  • 3.1 工具栏可以通过在UI界面右键选择添加工具栏

  • 3.2 设置窗口中心内容 setCentralWidget

    // https://blog.csdn.net/u012627502/article/details/38613041
    //一个Qt主窗口应用程序必须有一个中心窗口部件(Central Widget)。当你采用Qt Designer创建主窗口时,默认情况下,系统已经为你创建了一个中心窗口部件,它是子类化QWidget的。
    setCentralWidget(ui->textEdit);
  • 3.3 文本处理小程序

    #include "mainwindow.h"
    #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    setCentralWidget(ui->textEdit);//将文本框设为中心控件 initUI();//初始化自定义的ui
    initSignalSlot();//初始化信号&槽
    } MainWindow::~MainWindow()
    {
    delete ui;
    } /**
    * @brief MainWindow::initUI 初始化界面,并将其他控件添加到状态栏或者工具栏
    */
    void MainWindow::initUI()
    {
    labelFileName = new QLabel();
    labelFileName->setMinimumWidth(150);
    labelFileName->setText("当前文件:");
    ui->statusbar->addWidget(labelFileName); //将QLabel添加到状态栏 processBar = new QProgressBar();
    processBar->setMinimum(5);
    processBar->setMaximum(80);
    processBar->setValue(ui->textEdit->font().pointSize());
    ui->statusbar->addWidget(processBar);//将进度条添加到状态栏 spinBoxFontSize = new QSpinBox();
    spinBoxFontSize->setMinimum(5);
    spinBoxFontSize->setMaximum(80);
    spinBoxFontSize->setValue(ui->textEdit->font().pointSize());
    ui->toolBar->addWidget(new QLabel("字号"));
    ui->toolBar->addWidget(spinBoxFontSize);//将数字调整框添加到状态栏 fontComboBox = new QFontComboBox();
    fontComboBox->setCurrentFont(ui->textEdit->font());
    ui->toolBar->addWidget(new QLabel("字体"));
    ui->toolBar->addWidget(fontComboBox);//将字体选择框添加到状态栏 ui->actBold->setChecked(ui->textEdit->font().bold());
    ui->actItalic->setChecked(ui->textEdit->font().italic());
    ui->actUnderline->setChecked(ui->textEdit->font().underline());
    } /**
    * @brief MainWindow::initSignalSlot 连接信号和槽
    * @note 如果信号或者槽写错了,不会抛出异常,所以信号和槽要严格按照方法的签名拼写,一个符号都不能出错
    */
    void MainWindow::initSignalSlot()
    {
    connect(spinBoxFontSize,SIGNAL(valueChanged(int)), this, SLOT(on_spinBox_valueChanged(int)));
    connect(fontComboBox, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(on_fontComboBox_indexChanged(const QString&)));
    } /**
    * @description 将所选文本样式加粗
    * @brief MainWindow::on_actUnderline_triggered
    * @param checked
    */
    void MainWindow::on_actBold_triggered(bool checked)
    {
    QTextCharFormat format;// = ui->textEdit->currentCharFormat();
    format.setFontWeight(checked? QFont::Bold : QFont::Normal);
    ui->textEdit->mergeCurrentCharFormat(format);
    } /**
    * @description 将所选文本样式添加斜体
    * @brief MainWindow::on_actItalic_triggered
    * @param checked
    */
    void MainWindow::on_actItalic_triggered(bool checked)
    {
    QTextCharFormat format;// = ui->textEdit->currentCharFormat();
    format.setFontItalic(checked);
    ui->textEdit->mergeCurrentCharFormat(format);
    } /**
    * @description 将所选文本样式添加下划线
    * @brief MainWindow::on_actUnderline_triggered
    * @param checked
    */
    void MainWindow::on_actUnderline_triggered(bool checked)
    {
    QTextCharFormat format;// = ui->textEdit->currentCharFormat();
    format.setFontUnderline(checked);
    ui->textEdit->mergeCurrentCharFormat(format);
    } /**
    * @description 当文本框不能被复制时,禁用工具栏复制、剪切、粘贴按钮
    * @brief MainWindow::on_textEdit_copyAvailable
    * @param b
    */
    void MainWindow::on_textEdit_copyAvailable(bool b)
    {
    ui->actCut->setEnabled(b);
    ui->actCopy->setEnabled(b);
    ui->actPaste->setEnabled(ui->textEdit->canPaste());
    } /**
    * @description 当选中的文本变化时,工具栏的加粗、倾斜、下划线等按钮与文本样式一致
    * @brief MainWindow::on_textEdit_selectionChanged
    */
    void MainWindow::on_textEdit_selectionChanged()
    {
    QTextCharFormat format = ui->textEdit->currentCharFormat();
    ui->actBold->setChecked(format.font().bold());
    ui->actItalic->setChecked(format.fontItalic());
    ui->actUnderline->setChecked(format.fontUnderline());
    } /**
    * @description 字号框大小改变时,修改选中的文本字号
    * @brief MainWindow::on_spinBox_valueChanged
    * @param fontSize
    */
    void MainWindow::on_spinBox_valueChanged(int fontSize)
    {
    QTextCharFormat format;
    format.setFontPointSize(fontSize);
    ui->textEdit->mergeCurrentCharFormat(format);
    processBar->setValue(fontSize);
    } /**
    * @description 字体选择框改变时,设置字体
    * @brief MainWindow::on_fontComboBox_indexChanged
    * @param fontStyle
    */
    void MainWindow::on_fontComboBox_indexChanged(const QString &fontStyle)
    {
    QTextCharFormat format;
    format.setFontFamily(fontStyle);
    ui->textEdit->mergeCurrentCharFormat(format);//mergeCurrentCharFormat这会保留原本字体的其他风格,尤其是文本的字号或者风格不一样时,将会显示效果
    }

QT5笔记:3.手动撸界面和可视化托界面混合的更多相关文章

  1. Vue UI 可视化项目管理界面

    除了直接使用npm的命令进行安装脚手架的安装以外,我们还可以使用Vue提供的GUI方法vue ui来进行项目的构建以及安装 win+R powershell 打开终端 在一个干净的目录下输入命令 vu ...

  2. [R语言] ggplot2入门笔记4—前50个ggplot2可视化效果

    文章目录 通用教程简介(Introduction To ggplot2) 4 ggplot2入门笔记4-前50个ggplot2可视化效果 1 相关性(Correlation) 1.1 散点图(Scat ...

  3. eclipseMARS2.0使用可视化设计界面——配置window builder

    1.查看eclipse版本 不同版本的eclipse对应不同的版本window builder,如果不知道版本的话可以通过,点击HELP——>about eclipse来查看自己eclipse的 ...

  4. iOS 界面 之 EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具

    http://blog.csdn.net/fatherhui iOS开发,EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具 EALa ...

  5. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

  6. 第15.10节 PyQt(Python+Qt)入门学习:Qt Designer可视化设计界面组件与QWidget类相关的组件属性详解

    PyQt学习有阵子了,对章节的骨架基本考虑好了,准备本节就写组件的属性的,结果一是日常工作繁忙,经常晚上还要加班,二是Qt的组件属性很多,只能逐一学习.研究和整理,花的时间有点长,不过终于将可视化设计 ...

  7. 【WPF学习笔记】之如何传递第一个登录界面的值到下一个页面显示:动画系列之(三)

    ... ... 承接系列(二) 在之前的登录后台已设置发送到主界面: 在主界面接收传递的值: using System; using System.Collections.Generic; using ...

  8. 如何在Winform界面中设计图文并茂的界面

    在Winform里面,很多控件元素都是标准的,如图标.按钮.工具栏等等,所以一般设计标准的Winform界面比较快捷,但是往往这样的界面相对单调一些,特别在界面控件比较少的情况下,我们往往需要加入一些 ...

  9. Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...

  10. linux直接启动到字符界面或从字符界面启动到图形化界面

    修改/etc/inittab文件 将内容为:"id:5:initdefault"的行的数字5改为3,保存重启即可直接进入字符界面 PS:3和5分别表示运行级别 从字符界面启动到图形 ...

随机推荐

  1. 使用ProWindow时,控制按钮状态的说明

    在Pro SDK中,提供了一个默认的窗口基类,ProWindow Class,提供了基础的窗体样式,可供扩展和调用. 有网友问我,在使用时,会发现窗体右上角的控制按钮,有时会没有按照自己的预期显示. ...

  2. 鸿蒙UI开发快速入门 —— part06:组件状态管理之@State装饰器

    1.说在前面的话 在前五个章节中,我们构建的页面基本都是静态的页面,如果希望构建一个动态的.有交互的界面,就需要引入"状态"的概念,以便随着用户的交互,界面随着发生变化,例如如下的 ...

  3. MongoDB备份脚本

    #!/bin/bash #backup MongoDB #mongodump命令路径 DUMP=/home/mongodb/bin/mongodump #临时备份目录 OUT_DIR=/home/mo ...

  4. mysql 创建字段createtime 自动添加时间

    1. 创建createtime字段 类型选为timestamp 2.  添加默认值 CURRENT_TIMESTAMP

  5. 浅聊web前端性能测试

    最近正好在做web前端的性能测试,这次就来聊聊关于这个的测试思路~ 首先从用户的思维去思考,关于web前端性能,用户最看重的是什么...... 其实就是下面三个点: 1. 加载性能(即页面加载时间+资 ...

  6. Golang实战:深入解析国密算法在Go语言中的应用与优化

    Golang实战:深入解析国密算法在Go语言中的应用与优化 引言 随着信息技术的迅猛发展,数据安全成为企业和个人关注的焦点.国密算法(SM系列算法)作为我国自主研发的密码算法标准,逐渐在各个领域中得到 ...

  7. kubernetes更改nodePort模式下的默认端口范围

    使用nodePort模式,官方默认范围为30000-32767,详见Service官方文档. NodePort 类型如果将 type 字段设置为 NodePort,则 Kubernetes 控制平面将 ...

  8. Vue cli 2.x 3.x及4.x区别

    原文链接: 1.Vue cli 2.x 3.x及4.x区别 2.vue-cli2.0/3.0/4.0创建项目的方式差异解读和vue-cli4.0打包命令和环境配置

  9. 比较IDEA与Eclipse

    在IDEA的项目中,聚合工程或普通的根目录是工程(Project).它的每一个子模块(Module),都可以使用独立的JDK和Maven.下面的子工程称为模块(Module),子模块(Module)之 ...

  10. Eclipse IDE最常用的快捷键

    0.运行:Ctrl+F111.启动调试:F112.终止调试:Ctrl+F23.插入断点:Ctrl+Shift+B或双击行前4.单步跳入:F55.单步跳过:F66.跳出方法:F77.直接跳转到下一个断点 ...