这是我第一次接触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("第三题"));
}
}
当接收到信号的时候,会做出相对的响应。(需要在头文件内定义槽函数)
这是我所做的第一个程序,语言上表述不当的地方,希望大家多多指点。