QT学习笔记Day03 文件对话框、颜色对话框、字体对话框、消息对话框、自定义消息对话框、进度条对话框、QToolBox

目录

0x01 文件对话框

0x02.颜色对话框

0x03.字体对话框

0x04.消息对话框

0x05.自定义消息对话框

0x06.进度条对话框

0x07.QToolBox


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,"黑名单");

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值