勇哥的VC++应用框架学习之QT(2) 常用控件件、资源文件


今天研究一下常见界面控件。

包括下面的内容:


  •  QMainWindow

  • 菜单栏

    只允许一个

  • 工具栏

    可以有多个

  • 状态栏

    只允许 一个

  • 铆接部件

    这个就是浮动窗口,可以有多个

  • 核心部件

    核心部件可以是文本编辑,图片编辑控件等。只允许 一个。

  • 资源文件

        资源 文件的引用方式是:":+前缀+文件名"

        可以在UI编辑器中创建资源,并复制资源路径。


QMainWindow是创建QT GUI工程时的三种选项之一,其它两种是QWidget、QDialog。

QMainWindow可以拥有下面的一些界面部件。

image.png


这个是演示代码运行后的界面。

image.png

演示代码。

这种是用代码生成界面,但是大部分操作可以由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
版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864