QT5笔记:3.手动撸界面和可视化托界面混合

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这会保留原本字体的其他风格,尤其是文本的字号或者风格不一样时,将会显示效果
    }

__EOF__

本文作者echo_lovely
本文链接https://www.cnblogs.com/echo-lovely/p/16215771.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   echo_lovely  阅读(226)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示