qt+vs[基础控件介绍一]

来源:互联网 发布:js 多个条件判断 编辑:程序博客网 时间:2024/04/28 18:06

通过对我们实验室的项目中qt的使用,来介绍qt的相关知识。首先从界面里的控件开始讲起。

1.让vs显示代码的行号:

基于上面的问题,我们可以做这样的设置:点击菜单栏的"工具"-->"选项",弹出选项窗体-->标上选项窗体左下方的"显示所有设置"-->选择左方的"文本编辑器"-->选中"所有语言"-->把右方显示下"行号打上对勾",点击"确定"即可。

2.源文件,头文件的树形结构

view->solution explorer就可以显示

这是我写的工程页面,现在从上到下介绍控件,在后面的文章中,会继续更新槽函数等内容。

1.窗口的工具栏可以用QToolBar 加入,也可以用designer来做,我是在designer上设计的,通过下面的语句在代码中进行引用。

<span style="font-size:18px;">ui->setupUi(this);ui->actionNew</span>

2.窗体部分,QDockWidget、QSplitter、布局控件QBoxLayout 等控件及其相应属性。左边是一个树形结构用来显示文件,右面一个主窗口显示和一个显示list的photos窗口,

在bottom位置放一个status窗口。

<span style="font-size:18px;">      ui->setupUi(this);      setWindowState(Qt::WindowMaximized);//这是初始窗口最大化

<span style="font-size:18px;">       /*******显示汉字********/QTextCodec *codec = QTextCodec::codecForName("GB2312");  QTextCodec::setCodecForLocale(codec);  QTextCodec::setCodecForCStrings(codec);  QTextCodec::setCodecForTr(codec); </span>
左右各有一个窗体,里面需要分成两个可拉伸的部分,这里使用Qsplitter,对于两个部分,我们使用函数setStretchFactor()来实现比例
<span style="font-size:18px;">splitterM->setStretchFactor(splitterM->indexOf(topTabWidget),1);</span>
<span style="font-size:18px;"></span>

我使用了QDockWidget来做一个子窗口,这个窗口很好用,可以嵌套在其他的widget中,也可以把其它控件放在里面。做子窗口的嵌套很好用,在网上查了很久也发现有人用这个控件,真是很奇怪。

QDockWidget继承自QWidget,所以setMinimumHieght、addWidget等属性都有

<span style="font-size:18px;">最后QMainWindow里面用addDockWidget(位置,控件名)。</span>
<span style="font-size:18px;"></span>
<span style="font-size:18px;">我重写了QTreeView和QList.自定义的部分在后续介绍</span>



线程的使用 QThread

1.QThread 有自己的信号机制,而QThreadpool是没有的。

继承QThread 然后实现run()方法,就可以使用多线程

2.我使用多线程来加载图片,在线程里,使用opencv来读入内存,并用QImage来获得缩略图。

图片张数较多,数据量大,需要对同时开的线程总量做限制

可以使用信号量QSemphore,网上或者API 上都有很多,生产者、消费者的使用方法。

我只有一种性质的线程,使用 

QSemphore(10); QSemphore.acquire();//线程开始,消耗一个QSemphore.release();//线程结束,释放一个

就可以控制了。

0 0