Qt基本使用

发布于:2024-04-18 ⋅ 阅读:(30) ⋅ 点赞:(0)


0. 基本对话框

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QInputDialog>


Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

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

void Dialog::on_btnClearText_clicked()
{
    ui->plainTextEdit->clear();
}


void Dialog::on_btnOpen_clicked()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "选择对话框";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有格式(*.*)";
    QString filename = QFileDialog::getOpenFileName(this,dlgTitle, curPath,filter);

    if(filename.isEmpty())  return;
    ui->plainTextEdit->appendPlainText(filename);
}


void Dialog::on_btnOpenMulti_clicked()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "头title";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有格式(*.*)";
    QStringList filenames = QFileDialog::getOpenFileNames(this, dlgTitle,curPath, filter);

    if(filenames.count()==0) return;
    foreach (QString file, filenames) {
        ui->plainTextEdit->appendPlainText(file);
    }
}


void Dialog::on_btnSelDir_clicked()
{
    QString curPath = QDir::currentPath();
    QString title = "打开目录的title";
    QString directory = QFileDialog::getExistingDirectory(this, title, curPath, QFileDialog::ShowDirsOnly);

    if(directory.isEmpty()) return;
    ui->plainTextEdit->appendPlainText(directory);
}

void Dialog::on_btnSave_clicked()
{
    QString cur_path = QCoreApplication::applicationDirPath();
    QString title = "保存对话框的title";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有格式(*.*)";
    QString save_file = QFileDialog::getSaveFileName(this,title,cur_path,filter);

    if(save_file.isEmpty()) return;
    ui->plainTextEdit->appendPlainText(save_file);
}

void Dialog::on_btnColor_clicked()
{
    QPalette pal = ui->plainTextEdit->palette();
    QColor ini_color = pal.color(QPalette::Text);
    QColor color = QColorDialog::getColor(ini_color, this, "title:选择颜色");

    if(!color.isValid()) return;
    pal.setColor(QPalette::Text, color);
    ui->plainTextEdit->setPalette(pal);
}

void Dialog::on_btnFont_clicked()
{
    bool ok = false;
    QFont iniFont = ui->plainTextEdit->font();
    QFont font = QFontDialog::getFont(&ok, iniFont, this, "选择字体的title");

    if(!ok) return;
    ui->plainTextEdit->setFont(font);
}

void Dialog::on_btnInputString_clicked()
{
    QString flg_title = "输入文字";
    QString label = "请输入文件名";
    QString default_txt = "xxxx.txt";
    QLineEdit::EchoMode echo_mode = QLineEdit::Normal;
    bool ok = false;
    QString str = QInputDialog::getText(this, flg_title, label, echo_mode, default_txt, &ok);

    if(!ok) return;
    ui->plainTextEdit->appendPlainText(str);
}

void Dialog::on_btnInputInt_clicked()
{
    QString title = "输入整数";
    QString label = "请输入整数";
    int default_value = ui->plainTextEdit->font().pointSize();
    int min_value=0, max_value = 100;
    bool ok = false;
    int val = QInputDialog::getInt(this, title, label, default_value, min_value, max_value, 1, &ok);

    if(!ok) return;
    QFont font = ui->plainTextEdit->font();
    font.setPointSize(val);
    ui->plainTextEdit->setFont(font);

    ui->plainTextEdit->appendPlainText(QString::asprintf("%d", val));

}

void Dialog::on_btnInputFloat_clicked()
{
    QString title = "输入浮点数";
    QString label = "请输入浮点数";
    float default_value = 15.0;
    float min_value=0, max_value = 100;
    bool ok = false;
    int val = QInputDialog::getDouble(this, title, label, default_value, min_value, max_value, 2, &ok);

    if(!ok) return;
    ui->plainTextEdit->appendPlainText(QString::asprintf("%.2f", val));
}


void Dialog::on_btnInputItem_clicked()
{
    QStringList items;
    items << "优秀"<<"良好"<<"及格";
    QString title = "输入";
    QString label = "请选择条目";
    bool ok = false;
    QString text = QInputDialog::getItem(this, title, label, items, 0,true, &ok);

    if(!ok || text.isEmpty()) return;
    ui->plainTextEdit->appendPlainText(text);
}

#include <QMessageBox>
//弹出对话框
void Dialog::on_btnMsgQuestion_clicked()
{
    QString title = "我的对话框";
    QString label = "文件已修改,是否保存?";
    QMessageBox::StandardButtons result;
    result = QMessageBox::question(this, title, label,
                    QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::NoButton);

    QString str;
    if(result == QMessageBox::Yes)
        str = "yes 被选中";
    else if(result == QMessageBox::No)
        str = "no 被选中";
    else if(result == QMessageBox::Cancel)
        str = "cancel被选中";
    ui->plainTextEdit->appendPlainText(str);
}

//提示框
void Dialog::on_btnMsgInformation_clicked()
{
    QMessageBox::information(this, "title", "提示内容txt", QMessageBox::Ok);
}

void Dialog::on_btnMsgWarning_clicked()
{
    QMessageBox::warning(this, "title", "提示内容", QMessageBox::Ok);
}

void Dialog::on_btnMsgCritical_clicked()
{
    QMessageBox::critical(this, "title", "警告内容", QMessageBox::Ok);
}

void Dialog::on_btnMsgAbout_clicked()
{
    QMessageBox::about(this, "title", "text");
}


void Dialog::on_btnMsgAboutQt_clicked()
{
    QMessageBox::aboutQt(this, "title");
}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

QT_BEGIN_NAMESPACE
namespace Ui {
class Dialog;
}
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    void on_btnClearText_clicked();

    void on_btnOpen_clicked();

    void on_btnOpenMulti_clicked();

    void on_btnSelDir_clicked();

    void on_btnSave_clicked();

    void on_btnColor_clicked();

    void on_btnFont_clicked();

    void on_btnInputString_clicked();

    void on_btnInputInt_clicked();

    void on_btnInputFloat_clicked();

    void on_btnInputItem_clicked();

    void on_btnMsgQuestion_clicked();

    void on_btnMsgInformation_clicked();

    void on_btnMsgWarning_clicked();

    void on_btnMsgCritical_clicked();

    void on_btnMsgAbout_clicked();

    void on_btnMsgAboutQt_clicked();

private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H

1. 自定义对话框(模态 & 非模态)

1.1 模态

1.2 非模态