Qt学习(一):做一个简单的窗口

       这是我第一次接触Qt这个软件,之前也并没有C++相关的知识储备,借写博客的方式不断巩固复习,一边编写代码一边掌握相关的知识。

这是整个程序的效果图:

这个窗口里有一个超链接,2个不同大小的文本框,2个按钮,一个复选框,以及一个滑动轮。

下面是代码部分(因为比较简单直接一起上了):

首先是定义:

 QLabel *_label1;


    QLineEdit *_lineEdit1;
    QLineEdit *_lineEdit2;

    QPushButton *_button1;
    QPushButton *_button2;

    QComboBox *_combo1;

    QCheckBox *_chk1;

    QSlider *_bar1;

和之前学的C语言不同的是需要在定义时添加头文件:

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QComboBox>
#include <QCheckBox>
#include <QSlider>
#include <QDebug>

//保证程序执行时正常运行

之后在创建工程给定的框架内编写程序:

    _label1=new QLabel(this);
    _label1->setOpenExternalLinks(true);
    _label1->setText("<a href=\"http://www.baidu.com\">baidu");

//文本框
    _lineEdit1=new QLineEdit(this);
    _lineEdit1->setFixedSize(250,25);

    _lineEdit2=new QLineEdit(this);
    _lineEdit2->setFixedSize(250,300);

//下拉框
    _combo1=new QComboBox(this);
    _combo1->setGeometry(50,50,200,30);
    _combo1->addItem("第一题");
    _combo1->addItem("第二题");
    _combo1->addItem("第三题");

//按钮
    _button1=new QPushButton(this);
    _button1->setText(tr("提交"));

    _button2=new QPushButton(this);
    _button2->setText(tr("确认"));

//复选框
    _chk1=new QCheckBox("checkbox",this);
   // chk1->;


//滑动条
     _bar1 = new QSlider(this);
     _bar1->setOrientation(Qt::Horizontal);  // 水平方向
     _bar1->setMinimum(0);  // 最小值
     _bar1->setMaximum(200);  // 最大值
     _bar1->setSingleStep(10);
 QGridLayout*mainLayout=new QGridLayout(this);

    mainLayout->addWidget(_label1,0,0);
    mainLayout->addWidget(_lineEdit1,1,0);
    mainLayout->addWidget(_button2,1,2);
    mainLayout->addWidget(_lineEdit2,2,0);
    mainLayout->addWidget(_button1,3,0);
    mainLayout->addWidget(_combo1,4,0);
    mainLayout->addWidget(_chk1,5,0);
    mainLayout->addWidget(_bar1,6,0);

其中信号与槽的机制是一个崭新的“东西"

具体语句: connect(_combo1, SIGNAL(currentIndexChanged(QString)), this, SLOT(set_lineedit2()));

其中_combo1(即下拉框)为发送者,而他的当前值是信号;窗口则作为接收者。

其中槽函数如下:

void Dialog::set_lineedit2()
{
    qDebug() << "成功";
    qDebug() << _combo1->currentIndex();
    if(_combo1->currentIndex()==0)
    {
      _lineEdit2->setText(tr("第一题"));
    }
    if(_combo1->currentIndex()==1)
    {
      _lineEdit2->setText(tr("第二题"));
    }
    if(_combo1->currentIndex()==2)
    {
      _lineEdit2->setText(tr("第三题"));
    }
}

当接收到信号的时候,会做出相对的响应。(需要在头文件内定义槽函数)

这是我所做的第一个程序,语言上表述不当的地方,希望大家多多指点。

猜你喜欢

转载自blog.csdn.net/bingkuoluo/article/details/80313157