热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

嵌入式开发QT教程5集纯代码编写UI界面

上节课我们使用ui界面文件形式创建了窗体以及关闭按钮,现在尝试使用纯代码形式创建,并对比二者优劣。我们创建工程文件NO_UI,并取消勾选G

上节课我们使用ui界面文件形式创建了窗体以及关闭按钮,现在尝试使用纯代码形式创建,并对比二者优劣。我们创建工程文件NO_UI,并取消勾选Generate form表示不生成界面文件,选择QWidget作为基类。查看生成的main.cpp文件中生成了widget对象w,接着调用w方法show() 展示窗体。而在widgget.cpp文件中的widget构造和析构函数中没有任何东西。我们同样想添加一个label和一个close按钮,我们在widget函数中用代码方式来实现。

在QT的安装目录bin下找到assistant文件,是用户帮助手册,打开搜索QLabel,发现需要包含QLabel头文件,我们可以看到QLabel父类是QFrame,其父类又是QWidget,其父类又是QObject。

现在在widget.cpp中编写窗体文本label的代码:

QLabel *label = new QLabel;
label ->setText("I love you, Rick!");
label->show();

运行代码发现出现了两个窗体,一个主窗体为空,另一个小窗体显示文本信息。因为函数show()的窗口只出现在屏幕上单独显示。因此我们将上面一行改为函数setParent更改我们的副窗体。

方法二:在我们创建QLabel时直接带参数this,表示父类是属于我们的Widget。另外这种方法使得我们的窗体大小依赖于我们的文本大小。所以我们用resize改变窗体大小。或者使用setFixedSize()锁定我们的窗体大小。label->move更改文本位置,setWindowTitle设置窗体名称。

接着我们制作按钮,使用QPushbutton方法设置close按钮。

QLabel *label = new QLabel(this);label ->setText("I love you, Rick!");label->move(150,100);QPushButton *button = new QPushButton(this);button->setText("close");button->move(150,180);//label->show();//label->setParent(this);//resize(400,300);setFixedSize(400,300);setWindowTitle("My first NO_UI");
}

使用界面话UI方法不需要我们编写代码,直接拖拽即可,非常直观。但是缺陷在于某些组件我们无法使用可视化界面添加,即并不是无所不能的,而使用纯代码方法则可以解决这个问题。所以我们尽可能使用可视化的方法编程,二者结合使用。


推荐阅读
author-avatar
伊人憔悴儡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有