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”,才能链接成功。
运行效果:
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();
}
运行效果: