ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt4——精彩实例分析4

2022-03-01 20:32:37  阅读:181  来源: 互联网

标签:Qt4 ok tr 精彩 实例 new addWidget layout QLabel


.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,ok,tr,精彩,实例,new,addWidget,layout,QLabel
来源: https://blog.csdn.net/KK_546464/article/details/123214324

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有