QT学习 第一章:基本对话框(4)

使用标准输入框操作系统:Fedora Linux 14
创建文件夹InputDialog,以下是代码(三个文件)

/** Object: InputDialog 
 ** Desc:   使用标准输入框 
 ** File:   main.cpp 
 ** Compile:qmake-qt4 -project;qmake-qt4;make; 
 ** Author: LiXiujie   
 ** Date:  2011-05-12 
 ** Note:  编译说明: 
 **      qmake-qt4 -prject 自动生成程序的项目文件(*.pro); 
 **      qmake-qt4 用于生成程序的Makefile文件; 
 **      make 编译 Makefile 文件得到可执行文件。 
 ** */ 
#include <QApplication> // 所有QT图形化应用程序必须包含此文件,它包含了QT图形化应用程序的各种资源、基本设置、控制流及事件处理等。  
#include "InputDialog.h" // 自定义类头文件  
int main(int argc, char *argv[]){  
        QApplication app(argc, argv);  
        InputDialog *id = new InputDialog();  
        id->show();  
        return app.exec();  

==========================

/** Object: InputDialog 
 ** Desc:   使用标准输入框 
 ** File:   InputDialog.h 
 ** Class:  InputDialog使用标准输入框类 头文件 
 ** Compile:qmake-qt4 -project;qmake-qt4;make; 
 ** Author: LiXiujie  
 ** Date:  2011-05-12 
 ** Note:  编译说明: 
 **      qmake-qt4 -prject 自动生成程序的项目文件(*.pro); 
 **      qmake-qt4 用于生成程序的Makefile文件; 
 **      make 编译 Makefile 文件得到可执行文件。 
 ** */ 
#ifndef INPUTDIALOG_H  
#define INPUTDIALOG_H  
#include <QtGui>  
class InputDialog : public QDialog  
{  
    Q_OBJECT  
public:  
    InputDialog();  
public:  
    QPushButton *m_pPBName; // 按钮控件  
    QPushButton *m_pPBSex;  
    QPushButton *m_pPBAge;  
    QPushButton *m_pPBStature;  
    QLabel *m_pLabel1;  
    QLabel *m_pLabel2;  
    QLabel *m_pLabel3;  
    QLabel *m_pLabel4;  
    QLabel *m_pLabelName;  
    QLabel *m_pLabelSex;  
    QLabel *m_pLabelAge;  
    QLabel *m_pLabelStature;  
private slots:  
    void slotName();  
    void slotSex();  
    void slotAge();  
    void slotStature();  
};  
#endif // INPUTDIALOG_H 

==========================

/** Object: InputDialog 
 ** Desc:   使用标准输入框 
 ** File:   InputDialog.cpp 
 ** Class:  InputDialog使用标准输入框类 源文件 
 ** Compile:qmake-qt4 -project;qmake-qt4;make; 
 ** Author: LiXiujie  
 ** Date:  2011-05-12 
 ** Note:  编译说明: 
 **      qmake-qt4 -prject 自动生成程序的项目文件(*.pro); 
 **      qmake-qt4 用于生成程序的Makefile文件; 
 **      make 编译 Makefile 文件得到可执行文件。 
 ** */ 
#include "InputDialog.h"  
InputDialog::InputDialog() : QDialog(){  
    setWindowTitle(tr("Input Dialog")); // 设置对话框标题  
    m_pLabel1 = new QLabel(tr("Name : ")); // 生成标签控件实例,并设置显示内容  
    m_pLabel2 = new QLabel(tr("Sex : "));  
    m_pLabel3 = new QLabel(tr("Age : "));  
    m_pLabel4 = new QLabel(tr("Stature : "));  
    m_pLabelName = new QLabel(tr("LiXiujie"));  
    m_pLabelName->setFrameStyle(QFrame::Panel|QFrame::Sunken); // 设置标签控件框架样式为面板的、凹陷的。  
    m_pLabelSex = new QLabel(tr("male"));  // male 男  female 女  
    m_pLabelSex->setFrameStyle(QFrame::Panel|QFrame::Sunken);  
    m_pLabelAge = new QLabel(tr("25"));  
    m_pLabelAge->setFrameStyle(QFrame::Panel|QFrame::Sunken);  
    m_pLabelStature = new QLabel("168.5");  
    m_pLabelStature->setFrameStyle(QFrame::Panel|QFrame::Sunken);  
    m_pPBName = new QPushButton;  
    m_pPBName->setIcon(QIcon("images/btn.png")); // 设置按钮图标  
    m_pPBSex = new QPushButton;  
    m_pPBSex->setIcon(QIcon("images/btn.png"));  
    m_pPBAge =  new QPushButton;  
    m_pPBAge->setIcon(QIcon("images/btn.png"));  
    m_pPBStature = new QPushButton;  
    m_pPBStature->setIcon(QIcon("images/btn.png"));  
    QGridLayout *pLayout = new QGridLayout(this); // 表格布局控件  
    pLayout->addWidget(m_pLabel1, 0, 0);  
    pLayout->addWidget(m_pLabelName, 0, 1);  
    pLayout->addWidget(m_pPBName, 0, 2);  
    pLayout->addWidget(m_pLabel2, 1, 0);  
    pLayout->addWidget(m_pLabelSex, 1, 1);  
    pLayout->addWidget(m_pPBSex, 1, 2);  
    pLayout->addWidget(m_pLabel3, 2, 0);  
    pLayout->addWidget(m_pLabelAge, 2, 1);  
    pLayout->addWidget(m_pPBAge, 2, 2);  
    pLayout->addWidget(m_pLabel4, 3, 0);  
    pLayout->addWidget(m_pLabelStature, 3, 1);  
    pLayout->addWidget(m_pPBStature, 3, 2);  
    pLayout->setMargin(15); // 设置表格布局四周边空白为15像素。  
    pLayout->setSpacing(10); // 设置表格布局内部元素间空白为10像素。  
    pLayout->setColumnMinimumWidth(1, 120); // 设置表格布局中第二列最小宽度为120像素。  
    /* 绑定按钮单击事件处理函数 */ 
    connect(m_pPBName, SIGNAL(clicked()), this, SLOT(slotName()));  
    connect(m_pPBSex, SIGNAL(clicked()), this, SLOT(slotSex()));  
    connect(m_pPBAge, SIGNAL(clicked()), this, SLOT(slotAge()));  
    connect(m_pPBStature, SIGNAL(clicked()), this, SLOT(slotStature()));  
}  
void InputDialog::slotName(){  
    bool ok;  
    QString name = QInputDialog::getText(this, tr("User Name"),  
                        tr("Please input new name:"), QLineEdit::Normal, m_pLabelName->text(), &ok); // 文本输入对话框  
    if(ok && !name.isEmpty()) // 文本输入对话框,确定并输入内容不为空  
        m_pLabelName->setText(name);  
}  
void InputDialog::slotSex(){  
    QStringList list; // 字符串链表  
    list << tr("male") << tr("female");  
    bool ok;  
    QString sex = QInputDialog::getItem(this, tr("Sex"),  
                        tr("Please select sex:"), list, 0, false, &ok); // 下拉选项输入对话框  
    if (ok)  
        m_pLabelSex->setText(sex);  
}  
void InputDialog::slotAge(){  
    bool ok;  
    int age = QInputDialog::getInteger(this, tr("User Age"),  
                    tr("Please input age:"), m_pLabelAge->text().toInt(), 0, 150, 1, &ok); // 整数数字输入对话框  
    if(ok)  
        m_pLabelAge->setText(QString(tr("%1")).arg(age)); // %1用arg()参数age替换  
}  
void InputDialog::slotStature(){  
    bool ok;  
    double d = QInputDialog::getDouble(this, tr("Stature"),  
                        tr("Please input stature:"), m_pLabelStature->text().toDouble(), 0, 230.00, 1, &ok);  
    if(ok)  
        m_pLabelStature->setText(QString(tr("%1")).arg(d));  

按钮图标:images文件夹下

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfpdg.html