今天研究一下常见界面控件。
包括下面的内容:
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
版权声明:本文为博主原创文章,转载请附上博文链接!


少有人走的路



















