今天研究一下常见界面控件。
包括下面的内容:
QMainWindow
菜单栏
只允许一个
工具栏
可以有多个
状态栏
只允许 一个
铆接部件
这个就是浮动窗口,可以有多个
核心部件
核心部件可以是文本编辑,图片编辑控件等。只允许 一个。
资源文件
资源 文件的引用方式是:":+前缀+文件名"
可以在UI编辑器中创建资源,并复制资源路径。
QMainWindow是创建QT GUI工程时的三种选项之一,其它两种是QWidget、QDialog。
QMainWindow可以拥有下面的一些界面部件。
这个是演示代码运行后的界面。
演示代码。
这种是用代码生成界面,但是大部分操作可以由UI编辑器来完成。
#include "QtGui.h" #include <qevent.h> #include <qlabel.h> #include <qdockwidget.h> #include <qtextedit.h> #include <qlineedit.h> QtGui::QtGui(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); //菜单栏 QMenuBar * bar = menuBar(); this->setMenuBar(bar); QMenu * fileMenu = bar->addMenu("文件"); QMenu * editMenu = bar->addMenu("编辑"); QAction * newAction = fileMenu->addAction("新建"); fileMenu->addSeparator(); QAction * openAction = fileMenu->addAction("打开"); newAction->setIcon(QIcon(":/QtGui/E:/m.png")); //工具栏 可以有多个 QToolBar * toolBar = new QToolBar(this); addToolBar(Qt::LeftToolBarArea, toolBar); //默认依靠位置 //只允许左右依靠 toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); //设置浮动 toolBar->setFloatable(false); //设置移动(总开关) toolBar->setMovable(false); //设置工具栏项目 toolBar->addAction(newAction); toolBar->addAction(openAction); //状态栏 QStatusBar * stBar = statusBar(); setStatusBar(stBar); QLabel * label = new QLabel("提示信息", this); stBar->addWidget(label); QLabel * labe2 = new QLabel("右侧提示信息", this); QLabel *msgLabel = new QLabel("red msg",this); msgLabel->setStyleSheet(" QLabel{ color: red }"); stBar->addWidget(labe2); stBar->addWidget(msgLabel); //会出现两组信息混在一起的效果 stBar->showMessage("green"); //浮动窗口 铆接部件 可以有多个 QDockWidget * dock = new QDockWidget; addDockWidget(Qt::BottomDockWidgetArea, dock); //设置依靠范围 dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); //核心部件 只能有一个 QTextEdit * edit = new QTextEdit; setCentralWidget(edit); }
一些说明:
(1)下面这句报错: 不允许指针指向不完整的类类型
QMenu * fileMenu = bar->addMenu(tr("文件"));
解决方法是包含: #include <qevent.h>
在vs + QT 的环境下,这种错误很奇怪。因为QMenu它并没有显示错误,只是后bar->这部分显示错误,让人误以为不是包含出现问题。
这种缺少包含文件引用的错误,真得是很麻烦。像C#可以自动包含需要的引用,要方便很多。
(2)在vs+qt 下面和在Qt Creator下面开发QT程序,有些地方是不同的。
比如下面第一行是在vs+qt下面的,而第二句是在qt creator下面的。
ui.setupUi(this)
ui->setupUi(this)
所以造成一个问题是,网上有些讲QT的代码,在vs+qt下面就不适用,真是操蛋。
网上大部分人认为Qt Creator好用,我想那是因为他们没有用vs下的c#做过项目,对这个争论我只能呵呵了,我还是坚持选择用vs来开发。
(3)上面的代码是空架子,因为没有设置控件的信号槽,所以点击后没反应。
这里勇哥迫切想知道,怎么自动完成这些事,因为完全手敲代码,真得受不了。这是下一篇要研究的重点。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

