Qt4——精彩实例分析4

.h

#ifndef INPUTDIALOG_H
#define INPUTDIALOG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
class InputDlg:public QDialog
{
    Q_OBJECT
public:
    InputDlg();
public:
    QPushButton *nameButton;    //姓名
    QPushButton *sexButton;     //性别
    QPushButton *ageButton;     //年龄
    QPushButton *statureButton; //身高

    QLabel *label1;
    QLabel *label2;
    QLabel *label3;
    QLabel *label4;
    QLabel *namelabel;
    QLabel *sexlabel;
    QLabel *agelabel;
    QLabel *staturelabel;

private slots:
    void slotName();
    void slotSex();
    void slotAge();
    void slotStature();

};

#endif // INPUTDIALOG_H

.c

#include"inputdialog.h"
#include <QGridLayout>
#include <QInputDialog>
//构造函数
InputDlg::InputDlg()
{
    //设置窗体主题
    setWindowTitle("Input Dialog");

    //创建各个标签对象
    label1 = new QLabel(tr("Name :"));  //此为一种初始化label1显示字符的方式
    label2 = new QLabel;
    label2->setText("Sex :");            //此为第二种label的显示方式
    label3 = new QLabel(tr("Age :"));
    label4 = new QLabel(tr("Stature"));

    namelabel = new QLabel(tr("李明"));
    //QFrame::Panel  QFrame画一个面板使内容看起来凸起或者凹陷
    //QFrame::Sunken 框架和内容看起来凹陷,有3D效果Sunken凹陷 ised凸起  plain平的
    namelabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);//设置框架风风格

    sexlabel = new QLabel(tr("男"));
    sexlabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

    agelabel = new QLabel(tr("18"));
    agelabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

    staturelabel = new QLabel(tr("185"));
    staturelabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

    //创建各修改按钮
    nameButton = new QPushButton;
//    nameButton->setIcon(QIcon("btn.png"));      //图标可以把按键整图标需要先把资源添加到工程中
    nameButton->setText("...");
    sexButton = new QPushButton("...");
    ageButton = new QPushButton("...");
    statureButton = new QPushButton;
    statureButton->setText("...");

    //布局管理
    QGridLayout *layout = new QGridLayout(this);
    layout->addWidget(label1,0,0);
    layout->addWidget(namelabel,0,1);
    layout->addWidget(nameButton,0,2);
    layout->addWidget(label2,1,0);
    layout->addWidget(sexlabel,1,1);
    layout->addWidget(sexButton,1,2);
    layout->addWidget(label3,2,0);
    layout->addWidget(agelabel,2,1);
    layout->addWidget(ageButton,2,2);
    layout->addWidget(label4,3,0);
    layout->addWidget(staturelabel,3,1);
    layout->addWidget(statureButton,3,2);

    //信号与曹函数
    connect(nameButton,SIGNAL(clicked()),this,SLOT(slotName()));
    connect(sexButton,SIGNAL(clicked()),this,SLOT(slotSex()));
    connect(ageButton,SIGNAL(clicked()),this,SLOT(slotAge()));
    connect(statureButton,SIGNAL(clicked()),this,SLOT(slotStature()));
}

void InputDlg::slotName()
{
    bool ok;
    //getText(1,2,3,4,5,6) 函数弹出标准字符串输入对话框
    //第一个参数是标准输入框 的父窗口这里是他本身
    //第二个参数是标准输入对话框的标题名
    //第三个参数是为标准输入对话框标签提示
    //第四个参数是指定标准输入对话框中QLineEdit控件的输入模式
    //第五个参数是标准输入框默认出现的字体
    //第六个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
    QString name = QInputDialog::getText(this,tr("用户名"),
                   tr("请输入新的名字"),QLineEdit::Normal,namelabel->text(),&ok);
    if(ok && !name.isEmpty())//判断ok的值,如果单击确定则把新的姓名输入到对话框
    {
        namelabel->setText(name);
    }

}

void InputDlg::slotSex()
{
    QStringList list;//下拉列表
    //为列表加入元素
    list<< tr("男") << tr("女");
    bool ok;
    //getItem(1,2,3,4,5,6,7) 函数弹出标准条目选择对话框
    //第一个参数是标准输入框 的父窗口这里是他本身
    //第二个参数是标准输入对话框的标题名
    //第三个参数是为标准输入对话框标签提示
    //第四个参数是list,就是上面的可选条目
    //第五个参数是默认显示条目
    //第六个参数是下拉框中的文字是否可编辑
    //第七个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
    QString sex = QInputDialog::getItem(this,tr("性别"),"请选择性别",list,0,false,&ok);
    if(ok)
    {
        sexlabel->setText("sex");
    }
}

void InputDlg::slotAge()
{
    bool ok;
    //getInt(1,2,3,4,5,6,7,8) 函数弹出标准int类型输入对话框
    //第一个参数是标准输入框 的父窗口这里是他本身
    //第二个参数是标准输入对话框的标题名
    //第三个参数是为标准输入对话框标签提示
    //第四个参数是默认显示条目
    //第五六个参数指定QSpinBox控件的数值范围
    //第七个参数指定QSpinBox控件的步进值,就是上下箭头点击一次自增值
    //第八个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
    int age = QInputDialog::getInt(this,tr("用户年龄"),"请输入年龄",
                                   agelabel->text().toInt(),0,150,1,&ok);
    if(ok)
        agelabel->setText(QString(tr("%1")).arg(age));
}

void InputDlg::slotStature()
{
    bool ok;
    //getDouble(1,2,3,4,5,6,7,8) 函数弹出标准int类型输入对话框
    //第一个参数是标准输入框 的父窗口这里是他本身
    //第二个参数是标准输入对话框的标题名
    //第三个参数是为标准输入对话框标签提示
    //第四个参数是默认显示条目
    //第五六个参数指定QSpinBox控件的数值范围,身高范围
    //第七个参数指定QSpinBox控件的步进值,就是上下箭头点击一次
    //第八个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
    double d = QInputDialog::getDouble(this,"身高","请输入身高",175.00,0,230.00,1,&ok);
    if(ok)
        staturelabel->setText(QString(tr("%1")).arg(d));
}

main.c

#include "mainwindow.h"
#include <QApplication>
#include"inputdialog.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    InputDlg b;
    b.show();
    return a.exec();
}

Qt4——精彩实例分析4

上一篇:Uncaught TypeError Cannot set properties of undefined (setting ‘innerHTML‘)的错误


下一篇:win10查看系统激活状态