中企动力是什么公司荆州网站seo
今天来看一下QT中标准对话框的一些操作
第一步 : 建立一个Qdialog的工程 父类选择为Qdialog
第二步: 设计ui界面
大概如图所示,最下面那个控件是PlainTextEdit,这个界面不美观,但是我们的重点在于解释这些按钮绑定的事件
项目的大致结构如下:
**第三步:**直接复制我的这些代码到你的dialog.h中
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDir>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QInputDialog>
#include <QMessageBox>
#pragma execution_character_set("utf-8")
namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private slots:void on_btn_open1_clicked();void on_btn_openmany_clicked();void on_btn_chooselist_clicked();void on_btn_save_clicked();void on_btn_color_clicked();void on_btn_font_clicked();void on_btn_char_clicked();void on_btn_int_clicked();void on_btn_float_clicked();void on_btn_select_clicked();void on_pushButton_6_clicked();void on_btn_clear_clicked();private:Ui::Dialog *ui;
};#endif // DIALOG_H
第四步: 复制如下代码到dialog.cpp中
```cpp
#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);setFixedSize(800,800);connect(ui->btn_open1,SLOT(click()),this,SLOT(on_btn_open1_clicked()));connect(ui->btn_openmany,SLOT(click()),this,SLOT(on_btn_openmany_clicked()));connect(ui->btn_chooselist,SLOT(click()),this,SLOT(on_btn_chooselist_clicked()));connect(ui->btn_save,SLOT(click()),this,SLOT(on_btn_save_clicked()));connect(ui->btn_color,SLOT(click()),this,SLOT(on_btn_color_clicked()));connect(ui->btn_font,SLOT(click()),this,SLOT(on_btn_font_clicked()));connect(ui->btn_char,SLOT(click()),this,SLOT(on_btn_char_clicked()));connect(ui->btn_int,SLOT(click()),this,SLOT(on_btn_int_clicked()));connect(ui->btn_select,SLOT(click()),this,SLOT(on_btn_select_clicked()));connect(ui->pushButton_6,SLOT(click()),this,SLOT(on_pushButton_6_clicked()));connect(ui->btn_clear,SLOT(click()),this,SLOT(on_btn_clear_clicked()));
}Dialog::~Dialog()
{delete ui;
}void Dialog::on_btn_open1_clicked()
{QString curpath=QDir::currentPath();QString title="选择一个文件";QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";QString filename=QFileDialog::getOpenFileName(this,title,curpath,filter);if(!filename.isEmpty()){ui->plainTextEdit->appendPlainText(filename);}
}void Dialog::on_btn_openmany_clicked()
{QString curpath=QDir::currentPath();QString title="选择多个文件";QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";QStringList filelist=QFileDialog::getOpenFileNames(this,title,curpath,filter);if(!filelist.isEmpty()){for(int i=0;i<filelist.count();i++){ui->plainTextEdit->appendPlainText(filelist.at(i));}}
}void Dialog::on_btn_chooselist_clicked()
{QString curpath=QCoreApplication::applicationDirPath();QString title="选择一个目录";QString selectdir=QFileDialog::getExistingDirectory(this,title,curpath,QFileDialog::ShowDirsOnly);if(!selectdir.isEmpty()){ui->plainTextEdit->appendPlainText(selectdir);}}void Dialog::on_btn_save_clicked()
{QString curpath=QCoreApplication::applicationDirPath();QString title="保存文件";QString filter="h文件(*.h);;C++文件(.cpp);;所有文件(*.*)";QString filename=QFileDialog::getSaveFileName(this,title,curpath,filter);if(!filename.isEmpty()){ui->plainTextEdit->appendPlainText(filename);}}void Dialog::on_btn_color_clicked()
{QPalette pal=ui->plainTextEdit->palette();QColor inicolor=pal.color(QPalette::Text);QColor color=QColorDialog::getColor(inicolor,this,"选择颜色");if(color.isValid()){pal.setColor(QPalette::Text,color);ui->plainTextEdit->setPalette(pal);}
}void Dialog::on_btn_font_clicked()
{QFont inifont=ui->plainTextEdit->font();bool ok=false;QFont font=QFontDialog::getFont(&ok,inifont);if(ok){ui->plainTextEdit->setFont(font);}}void Dialog::on_btn_char_clicked()
{QString title="输入文字对话框";QString label="请输入文件名";QString txt="新建文件.txt";QLineEdit::EchoMode echomode=QLineEdit::Normal;bool ok=false;QString text=QInputDialog::getText(this,title,label,echomode,txt,&ok);if(ok&&!text.isEmpty()){ui->plainTextEdit->appendPlainText(text);}}void Dialog::on_btn_int_clicked()
{QString title="输入文字对话框";QString label="输入字体大小";int defaultvalue=ui->plainTextEdit->font().pointSize();int minvalue=6,maxvalue=50,stepvalue=1;bool ok=false;int inputvalue=QInputDialog::getInt(this,title,label,defaultvalue,minvalue,maxvalue,stepvalue,&ok);if(ok){QFont font=ui->plainTextEdit->font();font.setPointSize(inputvalue);ui->plainTextEdit->setFont(font);}
}void Dialog::on_btn_float_clicked()
{}void Dialog::on_btn_select_clicked()
{QStringList items;items<<"优秀"<<"良好"<<"合格"<<"不合格";QString title="条目选择对话框";QString label="请选择级别";int index=0;bool editable=true;bool ok=false;QString text=QInputDialog::getItem(this,title,label,items,index,editable,&ok);if(ok&&!text.isEmpty()){ui->plainTextEdit->appendPlainText(text);}
}void Dialog::on_pushButton_6_clicked()
{QString title="infor消息框";QString info="文件已经打开";QMessageBox::warning(this,title,info);}void Dialog::on_btn_clear_clicked()
{ui->plainTextEdit->clear();}
这样就实现了这个程序基本的功能
运行如下:
这个程序本身十分简单主要是为了让大家加深对标准对话框的一些理解,以及信号与槽的机制,如果有看不懂的代码可以留下你们的问题,我会及时解答