Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。本文主要练习使用Qt软件,做一个简单手工布局。模板是Windows的运行桌面应用。
1.纯代码编写程序
打开Qt creater,新建一个空项目,在项目里添加C++源文件,复制以下内容
#include<QApplication>
#include<QLineEdit>
#include<QPushButton>
#include<QWidget>
#include<QHBoxLayout>
#include<QVBoxLayout>
#include<QLabel>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);//初始化
QLabel *infoLabel=new QLabel;//标签
QLabel *cmdLabel=new QLabel;
QLineEdit *cmdLineEdit=new QLineEdit;//行编辑器
//定义三个按钮部件
QPushButton *submitButton=new QPushButton;
QPushButton *cancelButton=new QPushButton;
QPushButton *browserButton=new QPushButton;
//定义标签的内容,不能写中文,需要加一个头文件<QTextCodec>,以后介绍
infoLabel->setText("please input command in lineedit.");
cmdLabel->setText("Open:");
// 定义按钮内容
cmdLineEdit->clear();
submitButton->setText("Submit");
cancelButton->setText("Cancel");
browserButton->setText("browser");
//命令行水平布局
QHBoxLayout *cmdLayout=new QHBoxLayout;
cmdLayout->addWidget(cmdLabel);
cmdLayout->addWidget(cmdLineEdit);
//按钮行水平布局
QHBoxLayout *buttonLayout=new QHBoxLayout;
buttonLayout->addWidget(submitButton);
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(browserButton);
//整体垂直布局
QVBoxLayout *mainLayout=new QVBoxLayout;
mainLayout->addWidget(infoLabel);
mainLayout->addLayout(cmdLayout);
mainLayout->addLayout(buttonLayout);
//定义主窗口
QWidget *window=new QWidget();
window->setLayout(mainLayout);
window->setWindowTitle("Running..");
window->show();//显示窗口
return app.exec();
}
运行,如果出错,在工程文件中添加一句话
QT += widgets
SOURCES += \
layout.cpp
再次运行,我们就可以看到输出一个界面
2.在命令行编译程序
首次尝试,在Windows记事本中编写源码,然后再到命令行去编译运行该程序。在Qt的安装目录下新建文件夹layout,新建文本文档复制代码,文件另存为layout.cpp,打开开始菜单中Qt安装目录下的Qt5.5 for Desktop,(我的版本是这个,如果是4.8的版本可能是Command Prompt)。
随后在命令行中输入下图的命令,我试过一次文件已经生成了,第一次做会有编译过程,出错也会提醒。使用qmake生成工程文件以及Makefile文件,分别用mingw32-make -f Makefile.Debug和mingw32-make -f Makefile.Release生成Debug版和Release版的可执行文件
命令行编译很方便有没有。
3.使用ui界面文件
这就很方便了,Qt最强大的就是图形界面功能。
首先,在Qt软件里新建一个widget项目,完成之后会发现,项目里已经自动生成很多文件包括main.cpp,widget.h,widget.cpp以及界面文件widget.ui,打开界面文件,就可以随心所欲地做自己喜欢的窗口了。我们这里是添加三个pushButton,两个Label,一个行编辑器LineEdit。
然后是该名称,双击label或者button可以直接改,但要改对象名需要右击选择该对象名称。接下来就是修改布局,有一些快捷键Ctrl+H水平布局,Ctrl+L垂直布局,alt+shift+r预览效果。(按住Ctrl选定三个button然后按Ctrl+H就可以完成水平布局,其余类似),我们添加两个水平布局,一个垂直布局,为了布局好看,我们还添加了Spacer,站空位了,不显示出来。
label可以右击选择改变多信息文本,然后更改它的字体颜色等等格式。
当然我们发现生成的窗口随意拉伸很不好看,所以还可以固定窗口大小,方法:在widget.cpp的文件中加入两句话。
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setMaximumSize(393,150);//固定窗口大小
this->setMinimumSize(393,150);//固定窗口大小
}
Widget::~Widget()
{
delete ui;
}
然后再运行,窗口就不会变大小啦。
PS:QQ截图不能用,总是截下一些不是窗口里面的东西
至此,我们完成了Qt三种不同方式的体验,是不是很便捷呀!