Qt上要求界面处理一般需要在主线程中完成。
所以最好把次线程中的数据缓冲区放到主线程中:
1、一种方式可以进行数据拷贝,但肯定效率低了。
2、另一种方式是直接将数据缓冲区放到主线程中,然后在主线程中处理读取数据槽。但这样可能主线程压力大,机器配置不能太低。
3、直接在主线程中访问次线程的数据并刷新界面,不过这处理起来复杂(需要手工同步),容易出错。
4、将TableWidget指针传入次线程中,直接在次线程中对其进行操作并发送刷新信号。这种方式未经验证,感觉可能性不大:一方面指针容易走空,另一方面就是前面说的限制在主线程中对接面进行处理。不过所说的“处理”可能并不包括刷新数据吧。
关于怎么让qt背景覆盖全部界面相关资料如下
1Qss 的setStyleSheet设置背景
11background-image设置平铺或者居中
这种方法设置的要点是要将添加到qrc文件中,形成资源路径,然后在QT界面编辑或者程序代码中通过设置路径来实现背景设置。大小不能自适应控件大小。只能可以实现平铺或者居中显示。background-position:center;设置显示位置,background-repeat:no-repeat;设置是否平铺;
(1)平铺重复显示
QWidget#widgetWinPic
{
background-image:url(:/FaceMatch/Resources/pic/viewbackinpng);
background-repeat:repeat;
}
或者代码中uiwidgetWinPicsetStyleSheet("QPushButton{ background-image: url(:/FaceMatch/Resources/pic/viewbackinpng);background-repeat:repeat;");
(2)居中不重复设置
QWidget#widgetWinPic
{
background-image:url(:/FaceMatch/Resources/pic/viewbackinpng);
background-position:center;
background-repeat:no-repeat;
}
或者代码中 uiwidgetWinPicsetStyleSheet("QPushButton{ background-image: url(:/FaceMatch/Resources/pic/viewbackinpng);background-position:center;background-repeat:no-repeat;");
12 border-image设置按照控件大小缩放填充整个控件
被拉伸填满整个控件,可以实现缩放拉伸填充。会跟着控件的大小变化进行缩放,下图左侧是正常尺寸,右侧是放大后的样子
先去官网下一个QT库,QT可以用VS编译,也可以用QT自己的编译器,下载的时候看清楚。如果是VS的下载VS版本,如果想用gcc编译的就装MinGW,下载时看清楚版本和编译器。不论装哪一个都会安装QT
Creator。
如果单纯做QT的程序,建议直接用QT自己的编辑器QT
Creator,里面整合了所有QT需要的开发工具,用VS反而麻烦。
还有就是做界面程序,和控制台还是有很大差异的,不需要分成控制台和界面2个部分。界面是你运行结果的直观反映,直接就显示在图形界面中了(相当于自己做了一个控制台)。
设置方法:
类的继承关系:
QMotifStyle:OSF(开放基金协会)开发的一个工业标准的GUI(图形用户接口);
QCDEStyle:公共桌面环境(Common Desktop Environment)的缩写,CDE是一种运行于UNIX/AIX,基于Motif部件工具箱开发的桌面环境,惠普的OpenVMS、IBM的AIX等都采用CDE作为标准的桌面环境;
QS60Style:Series 60(简称S60)界面是诺基亚Symbian系统智能手机界面;
QGtkStyle:GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包,GNOME、XFCE等桌面环境和大部分窗口管理器都基于GTK+;
QMacStyle:苹果操作系统的界面风格;
QPlastiqueStyle:KDE桌面环境的界面风格;
QWindowsXPStyle和QWindowVistaStyle:分别是Windows XP和Windows Vista操作系统的界面风格;
示例:
在main函数中添加:
QApplication::setStyle(new QMotifStyle);
欢迎分享,转载请注明来源:品搜搜测评网