一.UI的使用
ui代码输入:
ui->setupUi(this);
ui->statusbar->showMessage("作者",3000);
在ui类中调用
二.对话框QDialong
模态对话框:就是会阻塞同一应用程序中其它窗口的输入
非模态对话框:不会堵塞同一应用程序中其它窗口的输入
1)自定义对话框
(1)QDialog::exec()实现应用程序级别的模态对话框
QDialog qdialog;
qdialog.setWindowTitle(tr("对话框"));
qdialog.exec();
(2)QDialog::open()实现窗口级别的模态对话框
QDialog qdialog;
qdialog.setWindowTitle(tr("对话框"));
qdialog.open();
(3)QDialog::show()实现非模态对话框
QDialog *qdialog=new QDialog ;
qdialog->setWindowTitle(tr("对话框"));
qdialog->show();
要在堆上建立,栈上建立会一闪而过。此方法有内存泄漏,由于对话框的特性,我们可以设置对话框关闭,自动销毁对话框。
QDialog *qdialog=new QDialog;
qdialog->setAttribute(Qt::WA_DeleteOnClose);
qdialog->setWindowTitle(tr("对话框"));
qdialog->show();
2)标准对话框
(1)文件对话框:
QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件"),"./",tr("Images (*.png *.xpm *.jpg)","Text(*.txt)"));
点击按钮打开,添加文件对话框;
四个参数,分别是父亲,标题,路径和类型
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>
#include <QDialog>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->statusbar->showMessage("作者",3000);
QToolBar *qtboolbar=new QToolBar(this);
//穿件工具栏
this->addToolBar(qtboolbar);
QAction *tool1=new QAction("运行");
QAction *tool2=new QAction("调试");
QAction *tool3=new QAction("编译");
qtboolbar->addAction(tool1);
qtboolbar->addAction(tool2);
qtboolbar->addAction(tool3);
// QDialog *qdialog=new QDialog;
// qdialog->setAttribute(Qt::WA_DeleteOnClose);
// qdialog->setWindowTitle(tr("对话框"));
// qdialog->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件"),"./",tr("Images (*.png *.xpm *.jpg)","Text(*.txt)"));
if(!fileName.isEmpty()){
ui->plainTextEdit->appendPlainText(fileName);
}
}
void MainWindow::on_pushButton_2_clicked()
{
QStringList files = QFileDialog::getOpenFileNames(
this,
"打开文件",
"./",
"Images (*.png *.xpm *.jpg)");
for(int i=0;i<files.count();i++){
ui->plainTextEdit->appendPlainText(files[i]);
}
}
(2)颜色对话框QColorDialog:
QColorDialog::getColor()
//生成颜色对话框
第一个参数是现有颜色,第二个this指针,第三个对话框名字,返回值是选择的颜色
void MainWindow::on_pushButton_3_clicked()
{
QPalette pal=ui->plainTextEdit->palette();
//获取现有调色板数据
QColor iniColort=pal.color(QPalette::Text);
//现有的文字颜色
QColor color1=QColorDialog::getColor(iniColort,this,"选择颜色");
//选择颜色
if(color1.isValid()){
//判断是和否存在
pal.setColor(QPalette::Text,color1);
//将调色板子的文字数据改变为返回的颜色
ui->plainTextEdit->setPalette(pal);
//设置调色板
}
}
点击按钮,生成颜色对话框,然后选择颜色,如果有效,设置文字颜色;
(3)字体对话框QFontDialog:
QFontDialo::getFont:生成选择字体对话框
void MainWindow::on_pushButton_4_clicked()
{
bool ok;
QFont inift=ui->plainTextEdit->font();
//获得原有文本框字体
QFont font = QFontDialog::getFont(&ok,inift,this);
//返回一个字体类
if (ok) {
ui->plainTextEdit->setFont(font);
//把该字体设置为返回的字体
} else {
}
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>
#include <QDialog>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->statusbar->showMessage("作者",3000);
QToolBar *qtboolbar=new QToolBar(this);
//穿件工具栏
this->addToolBar(qtboolbar);
QAction *tool1=new QAction("运行");
QAction *tool2=new QAction("调试");
QAction *tool3=new QAction("编译");
qtboolbar->addAction(tool1);
qtboolbar->addAction(tool2);
qtboolbar->addAction(tool3);
// QDialog *qdialog=new QDialog;
// qdialog->setAttribute(Qt::WA_DeleteOnClose);
// qdialog->setWindowTitle(tr("对话框"));
// qdialog->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件"),"./",tr("Images (*.png *.xpm *.jpg)","Text(*.txt)"));
if(!fileName.isEmpty()){
ui->plainTextEdit->appendPlainText(fileName);
}
}
void MainWindow::on_pushButton_2_clicked()
{
QStringList files = QFileDialog::getOpenFileNames(
this,
"打开文件",
"./",
"Images (*.png *.xpm *.jpg)");
for(int i=0;i<files.count();i++){
ui->plainTextEdit->appendPlainText(files[i]);
}
}
void MainWindow::on_pushButton_3_clicked()
{
QPalette pal=ui->plainTextEdit->palette();
//获取现有调色板数据
QColor iniColort=pal.color(QPalette::Text);
//现有的文字颜色
QColor color1=QColorDialog::getColor(iniColort,this,"选择颜色");
//选择颜色
if(color1.isValid()){
//判断是和否存在
pal.setColor(QPalette::Text,color1);
//将调色板子的文字数据改变为返回的颜色
ui->plainTextEdit->setPalette(pal);
//设置调色板
}
}
void MainWindow::on_pushButton_4_clicked()
{
bool ok;
QFont inift=ui->plainTextEdit->font();
//获得原有文本框字体
QFont font = QFontDialog::getFont(&ok,inift,this);
//返回一个字体类
if (ok) {
ui->plainTextEdit->setFont(font);
} else {
}
}
运行页面:
添加文件对话框:
选择颜色对话框:
选择字体对话框:
改变完后对话框: