QT5笔记:3.手动撸界面和可视化托界面混合
作者:互联网
3.手动撸界面和可视化托界面混合
-
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,界面,format,void,brief,textEdit,可视化,ui,MainWindow 来源: https://www.cnblogs.com/FlyonGrass/p/16215771.html