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

15 篇文章 0 订阅

通过对我们实验室的项目中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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值