目录
0x01 文件对话框
效果:
主要代码:
//选择文件对话框
//父窗口,标题,从哪个目录开始选文件,设定可以选择的文件
//返回值:选择的文件的绝对路径
QString fileName = QFileDialog::getOpenFileName(this,"选择一个文件","/Users/mac","c++ file (*.cpp);;c file (*.c);;head file(*.h);;all file (*.*)");
//另存为文件对话框
QString fileName = QFileDialog::getSaveFileName();
完整代码:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QFileDialog>
#include <QString>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->initWindow();
}
Widget::~Widget()
{
delete ui;
}
void Widget::initWindow()
{
this->pPushBtn = new QPushButton(this);
this->pPushBtn->setText("选择一个文件");
connect(this->pPushBtn,SIGNAL(clicked(bool)),this,SLOT(onClickBtn()));
}
void Widget::onClickBtn()
{
// qDebug()<<"ce";
//选择文件对话框
//父窗口,标题,从哪个目录开始选文件,设定可以选择的文件
//返回值:选择的文件的绝对路径
QString fileName = QFileDialog::getOpenFileName(this,"选择一个文件","/Users/mac","c++ file (*.cpp);;c file (*.c);;head file(*.h);;all file (*.*)");
qDebug()<<fileName;
}
0x02.颜色对话框
void Widget::onClickColorBtn()
{
qDebug()<<"color";
//颜色选择对话框
//初始颜色
//返回值 用户选择的颜色
QColor color = QColorDialog::getColor(Qt::black);
//修改主窗口的颜色
this->setPalette(QPalette(color));
qDebug()<<color;
}
0x03.字体对话框
字体对话框
QFont font = QFontDialog::getFont();
void Widget::onClickFontBtn()
{
qDebug()<<"font";
QFont font = QFontDialog::getFont(NULL,this);
qDebug()<<font;
}
0x04.消息对话框
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMessageBox>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->Connect();
}
Widget::~Widget()
{
delete ui;
}
void Widget::Connect()
{
connect(ui->CirticalBtn,SIGNAL(clicked(bool)),this,SLOT(OnClickCirticalBtn()));
connect(ui->InformationBtn,SIGNAL(clicked(bool)),this,SLOT(OnClickInformationBtn()));
connect(ui->QuestionBtn,SIGNAL(clicked(bool)),this,SLOT(OnClickQuestionBtn()));
connect(ui->WarningBtn,SIGNAL(clicked(bool)),this,SLOT(OnClickWarningBtn()));
}
void Widget::OnClickCirticalBtn()
{
qDebug()<<"cirtical";
//父窗口,标题,内容,按钮
QMessageBox::critical(this,"标题","内容",QMessageBox::Yes | QMessageBox::No | QMessageBox::Ok); //警告框
}
void Widget::OnClickInformationBtn()
{
qDebug()<<"infor";
QMessageBox::information(this,"标题","内容",QMessageBox::Yes);
}
void Widget::OnClickQuestionBtn()
{
qDebug()<<"q";
int ret = QMessageBox::question(this,"标题","确定要关闭程序?",QMessageBox::Yes | QMessageBox::No);
if(QMessageBox::Yes == ret){
this->close();
}
}
void Widget::OnClickWarningBtn()
{
qDebug()<<"w";
QMessageBox::warning(this,"标题","内容",QMessageBox::Yes|QMessageBox::No);
}
0x05.自定义消息对话框
void Widget::OnClickDiyBtn()
{
qDebug()<<"diy";
QMessageBox messageBox;
messageBox.setWindowTitle(tr("提示"));
messageBox.setText(tr("是否关闭窗口???"));
messageBox.setIconPixmap(QPixmap("/usr/local/go/doc/gopher/ref.png"));
//添加一个按钮,返回这个按钮的指针
QPushButton* pYesBtn = messageBox.addButton(tr("是"),QMessageBox::ActionRole);
QPushButton* pNoBtn = messageBox.addButton(tr("否"),QMessageBox::ActionRole);
//显示自定义对话框
messageBox.exec();
if(messageBox.clickedButton() == pYesBtn){
this->close();
}else{
qDebug()<<"No";
}
}
0x06.进度条对话框
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QProgressBar>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
// ui->setupUi(this);
this->InitWindow();
//设置一个定时器
this->pTimer = new QTimer();
this->pTimer->start(1); //每1ms发送一个timeout信号
connect(this->pTimer,SIGNAL(timeout()),this,SLOT(onTimeout()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::InitWindow()
{
qDebug()<<"测试";
this->pProgressBar = new QProgressBar(this);
this->pProgressBar->setRange(0,20000); //设置进度条的范围
this->pProgressBar->show();
this->pPushBtn = new QPushButton(this);
this->pPushBtn->setText("弹出模态框");
this->pPushBtn->move(100,0);
connect(this->pPushBtn,SIGNAL(clicked(bool)),this,SLOT(onClickBtn()));
}
void Widget::onTimeout()
{
// qDebug()<<"timeout";
static int index = 0;
if(index<=20000){
this->pProgressBar->setValue(index++);
}else{
this->pTimer->stop();
}
}
void Widget::onClickBtn()
{
qDebug()<<"click";
QProgressDialog process(this);
process.setRange(0,50000);
process.setModal(true);
for(int i =0;i<=50000;i++){
for(int j=0;j<2000;j++); //用于延时
process.setValue(i);
}
}
0x07.QToolBox
效果:
代码:
#include "widget.h"
#include "ui_widget.h"
#include <QTextEdit>
#include <QDebug>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QToolButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
// ui->setupUi(this);
this->initWindow();
}
Widget::~Widget()
{
delete ui;
}
void Widget::initWindow()
{
qDebug()<<"初始化";
this->setGeometry(0,0,200,550);
QGroupBox* pGroupBox = new QGroupBox();
QVBoxLayout* pVBoxLayout = new QVBoxLayout(pGroupBox);
QToolButton* pToolBtn = new QToolButton();
pToolBtn->setText("张三");
pToolBtn->setIcon(QPixmap("/usr/local/go/doc/gopher/ref.png"));
pToolBtn->setIconSize(QSize(40,40));
pToolBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
pToolBtn->setAutoRaise(true);
pVBoxLayout->addWidget(pToolBtn);
pToolBtn = new QToolButton();
pToolBtn->setText("李四");
pToolBtn->setIcon(QPixmap("/usr/local/go/doc/gopher/ref.png"));
pToolBtn->setIconSize(QSize(40,40));
pToolBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
pToolBtn->setAutoRaise(true);
pVBoxLayout->addWidget(pToolBtn);
pToolBtn = new QToolButton();
pToolBtn->setText("王麻子");
pToolBtn->setIcon(QPixmap("/usr/local/go/doc/gopher/ref.png"));
pToolBtn->setIconSize(QSize(40,40));
pToolBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
pToolBtn->setAutoRaise(true);
pVBoxLayout->addWidget(pToolBtn);
this->pMainToolBox = new QToolBox(this); //指定父窗口
QTextEdit* pTextEdit = new QTextEdit("hello");
this->pMainToolBox->addItem(pGroupBox,"好友");
this->pMainToolBox->addItem(pTextEdit,"陌生人");
this->pMainToolBox->addItem(pTextEdit,"黑名单");
}