QT系列之混合方式UI设计【最常用】

最终效果图:

 

代码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QProgressBar>
#include<QLabel>
#include<QFontComboBox>
#include<QSpinBox>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
    Q_OBJECT
private:
    QLabel *fLabCurFile;
    QProgressBar *progressBar;
    QSpinBox *spinFontSize;
    QFontComboBox *comboFont;
    void initUI();
    void iniSignalSlots();
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void on_actBold_triggered(bool checked);
    void on_acttalic_triggered(bool checked);
    void on_actUnderline_triggered(bool checked);
    void on_textEdit_copyAvailable(bool b);
    void on_textEdit_selectionChanged();
    void on_spinBoxFontSize_valueChanged(int aFontSize);
    void on_comboFont_currentIndexChanged(const QString &arg1);
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
void MainWindow::initUI()
{
    fLabCurFile = new QLabel;
    fLabCurFile->setMidLineWidth(150);//最小宽度
    fLabCurFile->setText("当前文件:");
    ui->statusbar->addWidget((fLabCurFile));
    progressBar = new QProgressBar;
    progressBar->setMinimum(5);
    progressBar->setMaximum(50);
    progressBar->setValue(ui->textEdit->font().pointSize());
    ui->statusbar->addWidget(progressBar);
    spinFontSize = new QSpinBox;
    spinFontSize->setMinimum(5);
    spinFontSize->setMaximum(50);
    ui->toolBar->addWidget(new QLabel("字体大小"));
    ui->toolBar->addWidget(spinFontSize);
    comboFont = new QFontComboBox;
    comboFont->setMinimumWidth(5);
    comboFont->setMaximumWidth(50);
    ui->toolBar->addWidget(new QLabel("字体"));
    ui->toolBar->addWidget(comboFont);
}
void MainWindow::iniSignalSlots()
{
    connect(spinFontSize,SIGNAL(valueChanged(int)),
            this,SLOT(on_spinBoxFontSize_valueChanged(int)));
    connect(comboFont,SIGNAL(currentIndexChanged(const QString&)),
            this,SLOT(on_comboFont_currentIndexChanged(const QString&)));
}
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initUI();
    iniSignalSlots();
    setCentralWidget(ui->textEdit);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_actBold_triggered(bool checked)
{
    QTextCharFormat fmt;
    //fmt = ui->textEdit->currentCharFormat();  //可以省略
    if(checked)
        fmt.setFontWeight(QFont::Bold);
     else
        fmt.setFontWeight(QFont::Normal);
    ui->textEdit->mergeCurrentCharFormat(fmt);
}
void MainWindow::on_acttalic_triggered(bool checked)
{
    QTextCharFormat fmt;
    //fmt = ui->textEdit->currentCharFormat();  //可以省略
    if(checked)
        fmt.setFontItalic(QFont::StyleItalic);
     else
        fmt.setFontItalic(QFont::Normal);
    ui->textEdit->mergeCurrentCharFormat(fmt);
}
void MainWindow::on_actUnderline_triggered(bool checked)
{
    QTextCharFormat fmt;
    //fmt = ui->textEdit->currentCharFormat();  //可以省略
    if(checked)
        fmt.setFontUnderline(QFont::UnderlineResolved);
     else
        fmt.setFontItalic(QFont::Normal);
    ui->textEdit->mergeCurrentCharFormat(fmt);
}
//当选中文本时,才可以复制 剪切动作
void MainWindow::on_textEdit_copyAvailable(bool b)
{
    ui->actcut->setEnabled(b);
    ui->actcopy->setEnabled(b);
    ui->actpaste->setEnabled(ui->textEdit->canPaste());
}
//当选中文本时,可以看到文字的状态,是否加粗 是否倾斜  是否具有下划线
void MainWindow::on_textEdit_selectionChanged()
{
    QTextCharFormat fmt;
    fmt=ui->textEdit->currentCharFormat();
    ui->acttalic->setChecked(fmt.fontItalic());
    ui->actBold->setChecked(fmt.font().bold());
    ui->actUnderline->setChecked(fmt.fontUnderline());
}
void MainWindow::on_spinBoxFontSize_valueChanged(int aFontSize)
{
    QTextCharFormat fmt;
    fmt.setFontPointSize(aFontSize);//选中的文字设置
    ui->textEdit->mergeCurrentCharFormat(fmt);  //融合
    progressBar ->setValue(aFontSize);
}
void MainWindow::on_comboFont_currentIndexChanged(const QString &arg1)
{
   QTextCharFormat fmt;
   fmt.setFontFamily(arg1);
   ui->textEdit->mergeCurrentCharFormat(fmt);
}

 

posted @ 2022-05-06 16:47  江南王小帅  阅读(357)  评论(0)    收藏  举报