QT开发应用程序(9)-- 文件等功能对话框

1、取得文件对话框

取得文件名的函数,有以下这些:
QFileDialog::getOpenFileName()、
QFileDialog::getSaveFileName()、
QFileDialog::getOpenFileUrl()等。使用方法类似。

	
#include<QFileDialog>
QString FileOpen()
{
    QString strFileName = QFileDialog::getOpenFileName(this,"open file dialog","/","C++ files(*.cpp)::C files(*.c)::Head files(*.h) ");
    qDebug()<< strFileName ;
    return strFileName ;
}

运行效果:
在这里插入图片描述

2、取得颜色对话框

取得颜色,使用QColorDialog对话框类。


#include <QColorDialog>
void showColor()
{
    QColor c = QColorDialog::getColor(Qt::blue);
}

运行效果
在这里插入图片描述

3、取得字体对话框

取得字体使用QFontDialog对话框类。

void showFont()
{
    bool ok;
    QFont f = QFontDialog::getFont(&ok);
    if (ok)
    {
        qDebug()<<f.family();// 取字体名称
    }
}

运行效果

在这里插入图片描述

4、MessageBox

QMessageBox::question():显示疑问信息
QMessageBox::information():显示提示信息
QMessageBox::warning():显示警告信息
QMessageBox::critical():显示错误信息
QMessageBox::about():显示关于信息
QMessageBox::aboutQt():显示QT信息

#include <QMessageBox>
void MessageBox()
{
	QMessageBox::question(NULL, QString("Question消息框   "),
		QString("您现在已经修改完成,是否要结束程序?  "),
		QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);

	QMessageBox::information(NULL, QString("Information消息框   "),
		QString("这是Information消息框测试,欢迎您!  "));
	QMessageBox::warning(NULL, QString("Warning消息框  "),
		QString("您修改的内容还未保存,是否要保存对文档的修改?  "),
		QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel,
		QMessageBox::Save);
	QMessageBox::critical(NULL, QString("Critical消息框  "), QString("这是一个Critical消息框测试!  "));
	QMessageBox::about(NULL, QString("About消息框  "), QString("这是一个About消息框测试!  "));

	QMessageBox::aboutQt(NULL, QString("About Qt消息框  "));

}

运行效果:
在这里插入图片描述

5、打印对话框

要打印时使用QPrintDialog对话框类。

#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrinter>
void print()
{
	QPrinter printer(QPrinter::HighResolution);
	QPrintDialog dialog(&printer, NULL);
	dialog.exec();
}

注意在 (.pro)工程文件中加入 “QT+= printsupport”,才能链接成功。

扫描二维码关注公众号,回复: 10369097 查看本文章

在这里插入图片描述运行效果:

在这里插入图片描述

5、工具盒类QToolBox

#include "mydrawer.h"
#include <QGroupBox>
#include <QVBoxLayout>
MyDrawer::MyDrawer(QWidget *parent, Qt::WindowFlags f)
    :QToolBox(parent,f)
{
    setWindowTitle(tr("My QQ"));                   //设置主窗体的标题

    toolBtn1_1 =new QToolButton;
    toolBtn1_1->setText(tr("张力"));
    toolBtn1_1->setIcon(QPixmap("11.png"));
    toolBtn1_1->setIconSize(QPixmap("11.png").size());
    toolBtn1_1->setAutoRaise(true);
    toolBtn1_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    toolBtn1_2 =new QToolButton;
    toolBtn1_2->setText(tr("李四"));
    toolBtn1_2->setIcon(QPixmap("12.png"));
    toolBtn1_2->setIconSize(QPixmap("12.png").size());
    toolBtn1_2->setAutoRaise(true);
    toolBtn1_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    toolBtn1_3 =new QToolButton;
    toolBtn1_3->setText(tr("王小强"));
    toolBtn1_3->setIcon(QPixmap("13.png"));
    toolBtn1_3->setIconSize(QPixmap("13.png").size());
    toolBtn1_3->setAutoRaise(true);
    toolBtn1_3->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    toolBtn1_4 =new QToolButton;
    toolBtn1_4->setText(tr("赵小二"));
    toolBtn1_4->setIcon(QPixmap("14.png"));
    toolBtn1_4->setIconSize(QPixmap("14.png").size());
    toolBtn1_4->setAutoRaise(true);
    toolBtn1_4->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    toolBtn1_5 =new QToolButton;
    toolBtn1_5->setText(tr("孙悟空"));
    toolBtn1_5->setIcon(QPixmap("155.png"));
    toolBtn1_5->setIconSize(QPixmap("155.png").size());
    toolBtn1_5->setAutoRaise(true);
    toolBtn1_5->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    QGroupBox *groupBox1=new QGroupBox;
    QVBoxLayout *layout1=new QVBoxLayout(groupBox1);    //(groupBox1);
    layout1->setMargin(10);                             //布局中各窗体的显示间距
    layout1->setAlignment(Qt::AlignHCenter);            //布局中各窗体的显示位置
    layout1->addWidget(toolBtn1_1);
    layout1->addWidget(toolBtn1_2);
    layout1->addWidget(toolBtn1_3);
    layout1->addWidget(toolBtn1_4);
    layout1->addWidget(toolBtn1_5);
    layout1->addStretch();                              //插入一个占位符

    toolBtn2_1 =new QToolButton;
    toolBtn2_1->setText(tr("王小二"));
    toolBtn2_1->setIcon(QPixmap("21.png"));
    toolBtn2_1->setIconSize(QPixmap("21.png").size());
    toolBtn2_1->setAutoRaise(true);
    toolBtn2_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    toolBtn2_2 =new QToolButton;
    toolBtn2_2->setText(tr("张小丫"));
    toolBtn2_2->setIcon(QPixmap("22.png"));
    toolBtn2_2->setIconSize(QPixmap("22.png").size());
    toolBtn2_2->setAutoRaise(true);
    toolBtn2_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    QGroupBox *groupBox2=new QGroupBox;
    QVBoxLayout *layout2=new QVBoxLayout(groupBox2);
    layout2->setMargin(10);
    layout2->setAlignment(Qt::AlignHCenter);
    layout2->addWidget(toolBtn2_1);
    layout2->addWidget(toolBtn2_2);

    toolBtn3_1 =new QToolButton;
    toolBtn3_1->setText(tr("陈大"));
    toolBtn3_1->setIcon(QPixmap("31.png"));
    toolBtn3_1->setIconSize(QPixmap("31.png").size());
    toolBtn3_1->setAutoRaise(true);
    toolBtn3_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    toolBtn3_2 =new QToolButton;
    toolBtn3_2->setText(tr("李奎"));
    toolBtn3_2->setIcon(QPixmap("32.png"));
    toolBtn3_2->setIconSize(QPixmap("32.png").size());
    toolBtn3_2->setAutoRaise(true);
    toolBtn3_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    QGroupBox *groupBox3=new QGroupBox;
    QVBoxLayout *layout3=new QVBoxLayout(groupBox3);
    layout3->setMargin(10);
    layout3->setAlignment(Qt::AlignHCenter);
    layout3->addWidget(toolBtn3_1);
    layout3->addWidget(toolBtn3_2);

    this->addItem((QWidget*)groupBox1,tr("我的好友 "));
    this->addItem((QWidget*)groupBox2,tr("陌生人 "));
    this->addItem((QWidget*)groupBox3,tr("黑名单 "));
}

运行效果:

在这里插入图片描述

6、进度条QProgressBar

#include <QProgressDialog>
ProgressDlg::ProgressDlg(QWidget *parent)
    : QDialog(parent)
{
    QFont font("ZYSong18030",12);
    setFont(font);
    setWindowTitle(tr("Progress"));

    FileNum =new QLabel;
    FileNum->setText(tr("数目: "));
    FileNumLineEdit =new QLineEdit;
    FileNumLineEdit->setText(tr("100000 "));

    ProgressType =new QLabel;
    ProgressType->setText(tr("类型: "));
    comboBox =new QComboBox;
    comboBox->addItem(tr("progressBar"));
    comboBox->addItem(tr("progressDialog"));

    progressBar =new QProgressBar;

    starBtn =new QPushButton();
    starBtn->setText(tr("开始 "));

    mainLayout =new QGridLayout(this);
    mainLayout->addWidget(FileNum,0,0);
    mainLayout->addWidget(FileNumLineEdit,0,1);
    mainLayout->addWidget(ProgressType,1,0);
    mainLayout->addWidget(comboBox,1,1);
    mainLayout->addWidget(progressBar,2,0,1,2);
    mainLayout->addWidget(starBtn,3,1);
    mainLayout->setMargin(15);
    mainLayout->setSpacing(10);

    connect(starBtn,SIGNAL(clicked()),this,SLOT(startProgress()));
}



void ProgressDlg::startProgress()
{
    bool ok;
    int num =FileNumLineEdit->text().toInt(&ok);

    if(comboBox->currentIndex()==0)                   //ProgressBar
    {
        progressBar->setRange(0,num);
        for(int i=1;i<num+1;i++)
        {
            progressBar->setValue(i);
        }
    }
    else if(comboBox->currentIndex()==1)             //ProgressDialog
    {
        QProgressDialog *progressDialog=new QProgressDialog(this);
        progressDialog->setFont(font);
        progressDialog->setWindowModality(Qt::WindowModal);
        progressDialog->setMinimumDuration(5);
        progressDialog->setWindowTitle(tr("Please Wait"));
        progressDialog->setLabelText(tr("Copying..."));
        progressDialog->setCancelButtonText(tr("Cancel"));
        progressDialog->setRange(0,num);
        for(int i=1;i<num+1;i++)
        {
            progressDialog->setValue(i);
            if(progressDialog->wasCanceled())
                return;
        }
    }
}

运行效果
在这里插入图片描述

6、LCD数字QLCDNumber

#include <QTimer>
#include <QTime>

DigitView::DigitView(QWidget *parent)
    :QLCDNumber(parent)
{
    QPalette p=palette();
    p.setColor(QPalette::Window,Qt::blue);
    setPalette(p);

    setWindowFlags(Qt::FramelessWindowHint);

    setWindowOpacity(0.5);

    QTimer *timer=new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));
    timer->start(1000);
    showTime();
    resize(150,60);
    showColon=true;                                 //初始化
}

void DigitView::showTime()
{
    QTime time=QTime::currentTime();
    QString text=time.toString("hh:mm");
    if(showColon)
    {
        text[2]=':';
        showColon=false;
    }
    else
    {
        text[2]=' ';
        showColon=true;
    }
    display(text);
}

运行效果:

在这里插入图片描述

7、程序启动窗体QSplashScreen

#include "mainwindow.h"
#include <QApplication>
#include <QPixmap>
#include <QSplashScreen>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap("Qt.png");
    QSplashScreen splash(pixmap);
    splash.show();
    a.processEvents();
    MainWindow mainWindow;
    mainWindow.show();
    splash.finish(&mainWindow); // 主窗体显示后,结束启动窗体
    
    return a.exec();
}

运行效果:
在这里插入图片描述

发布了30 篇原创文章 · 获赞 9 · 访问量 932

猜你喜欢

转载自blog.csdn.net/x879014419/article/details/105138975