Qt(四)使用代码与UI文件混合开发

一、UI设计

新建项目,主要选项如下图:一个MainWindow,带ui文件。
在这里插入图片描述
初步Ui设计
在这里插入图片描述
信号与槽函数:将上面的操作行为映射至槽函数来执行操作。
在这里插入图片描述

二、代码开发

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLabel>
#include <QProgressBar>  // 进度条
#include <QSpinBox>      // 字体大小设置框
#include <QFontComboBox> //下拉字体选择

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 initSignalSlots();
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_actBold_triggered(bool checked);

    void on_textEdit_copyAvailable(bool b);

    void on_textEdit_selectionChanged();

    void on_spinBoxFontSize_valueChange(int aFontSize);
    void on_comboFont_currentIndexChanged(const QString &args1);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMainWindow>




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;
    ui->toolBar->addWidget(new QLabel("字体"));
    ui->toolBar->addWidget(comboFont);

    setCentralWidget(ui->textEdit);
}

void MainWindow::initSignalSlots()
{
    
    
    connect(spinFontSize,
            SIGNAL(valueChanged(int)),
            this,
            SLOT(on_spinBoxFontSize_valueChange(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();
    initSignalSlots();
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}


void MainWindow::on_actBold_triggered(bool checked)
{
    
    
    QTextCharFormat fmt;
    if(checked)
        fmt.setFontWeight(QFont::Bold);
    else
        fmt.setFontWeight(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->actItalic->setChecked(fmt.fontItalic());
    ui->actBold->setChecked(fmt.font().bold());
    ui->actUndelline->setChecked(fmt.fontUnderline());
}

void MainWindow::on_spinBoxFontSize_valueChange(int aFontSize)
{
    
    
    QTextCharFormat fmt;
    fmt.setFontPointSize(aFontSize);
    ui->textEdit->mergeCurrentCharFormat(fmt);
    progressBar->setValue(aFontSize);
}

void MainWindow::on_comboFont_currentIndexChanged(const QString &args1)
{
    
    
    QTextCharFormat fmt;
    fmt.setFontFamily(args1);
    ui->textEdit->mergeCurrentCharFormat(fmt);
}

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

为APP应用添加图标
在工程.pro同级文件夹中放入ico图像,并将文件名添加到.pro中,如下:

RC_ICONS = title.ico

效果演示:(未实现斜体与下划线功能)
在这里插入图片描述

工具栏编译不显示图标:https://blog.csdn.net/u013541325/article/details/102491336

猜你喜欢

转载自blog.csdn.net/wsp_1138886114/article/details/122808824
今日推荐