Qt4——精彩实例分析2

这篇博客详细介绍了如何使用Qt库创建一个标准对话框,包括文件对话框、颜色对话框和字体对话框。通过信号与槽机制,实现了点击不同按钮弹出相应对话框的功能,并展示了如何设置和获取用户的选择,如文件名、颜色和字体。
摘要由CSDN通过智能技术生成

.h文件

#ifndef STANDARDDIALOGS_H
#define STANDARDDIALOGS_H
#include <QDialog>
#include <QGridLayout>
#include <QPushButton>
#include <QLineEdit>
class StandardDialogs : public QDialog
{
    Q_OBJECT
public:
    StandardDialogs(QWidget *parent, Qt::WindowFlags f);
    ~StandardDialogs();
public:
    QGridLayout *layout;
    QPushButton *filePushButton;
    QPushButton *colorPushButton;
    QPushButton *fontPushButton;
    QLineEdit *fileLineEdit;
    QLineEdit *fontLineEdit;
    QFrame *colorFrame;
private slots:
    void slotOpenbFileDlg();
    void slotOpenColorDlg();
    void slotOpenFontDlg();

};
#endif // STANDARDDIALOGS_H

.c文件

#include <StandardDialogs.h>
#include <QFileDialog>
#include <QString>
#include <QLineEdit>
#include <QWidget>
#include <QFontDialog>
#include <QColorDialog>
//构造初始化列表,对QDialog进行初始化
StandardDialogs::StandardDialogs(QWidget *parent,Qt::WindowFlags f):QDialog (parent,f)
{
    setWindowTitle(tr("Standard Dialogs"));//设置主窗体标题

    layout = new QGridLayout(this);        //

    filePushButton = new QPushButton;
    filePushButton->setText(tr("File Doalog"));

    colorPushButton = new QPushButton;
    colorPushButton->setText(tr("color Dialog"));

    fontPushButton = new QPushButton;
    fontPushButton->setText(tr("font Dialog"));

    fileLineEdit = new QLineEdit;//用来显示选择的文件名

    colorFrame = new QFrame;
    colorFrame->setFrameShape(QFrame::Box);      //边框的形状
    colorFrame->setAutoFillBackground(true);    //自动更新背景颜色

    fontLineEdit = new QLineEdit;
    fontLineEdit->setText(tr("Hello World!!!"));


    //对控件进行位置调整布局
    layout->addWidget(filePushButton,0,0);
    layout->addWidget(fileLineEdit,0,1);
    layout->addWidget(colorPushButton,1,0);
    layout->addWidget(colorFrame,1,1);
    layout->addWidget(fontPushButton,2,0);
    layout->addWidget(fontLineEdit,2,1);
    layout->setMargin(15);      //表示控件与窗体的左右边距
    layout->setSpacing(10);     //表示各个控件之间的上下间距

    //将各个按钮的信号与曹进行连接
    connect(filePushButton,SIGNAL(clicked()),this,SLOT(slotOpenbFileDlg()));
    connect(colorPushButton,SIGNAL(clicked()),this,SLOT(slotOpenColorDlg()));
    connect(fontPushButton,SIGNAL(clicked()),this,SLOT(slotOpenFontDlg()));
}

//文件选择事件触发执行函数
void StandardDialogs::slotOpenbFileDlg()
{

    QString s = QFileDialog::getOpenFileName(this,"open file dialog","/""C++file(*.cpp);;Cfiles (*.c);;Head file(*.h)");

   fileLineEdit->setText(s.toLocal8Bit());//选择文件,把文件名显示在输入框内
}

//颜色选择事件触发执行函数
void StandardDialogs::slotOpenColorDlg()
{
    QColor color = QColorDialog::getColor(Qt::blue);
    if(color.isValid())
    {
        colorFrame->setPalette(QPalette(color));//选择颜色
    }

}

//字体选择事件触发执行函数
void StandardDialogs::slotOpenFontDlg()
{
    bool ok;
    QFont font = QFontDialog::getFont(&ok);
    if(ok)
    {
        fontLineEdit->setFont(font);//设置字体
    }
}

//析构
StandardDialogs::~StandardDialogs()
{
    ;
}




main.c

#include "mainwindow.h"
#include <QApplication>
#include <StandardDialogs.h>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //创建对象的时候要按照构造函数的模式创建,否则无法创建成功
    StandardDialogs B(NULL,Qt::Dialog);
    B.show();
    return a.exec();
}

结果:点击不同的按键会有不同的对话框弹出,按键与对话框使用信号与曹机制连接在一起

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值