sbw Blog - QT
  • 来源: 石博文博客 | 浏览: 7729 | 评论: 10 | 时间: 2017-02-24
    Qt 中经常使用 Model-View 模型来创建列表等视图,这样设计程序结构的好处是能将数据部分和界面完全分离。其中 Model 负责数据的准备与加工,View 提供了具体的对外显示的 Widget,而 Delegate 用作在 View 上绘图的模块。而对于现代的图形程序设计,对动画效果的要求更多,需要这三个模块配合来创建动画效果。
  • 来源: 石博文博客 | 浏览: 6898 | 评论: 0 | 时间: 2016-01-11
    QComboBox 的弹出列表如果非常长的话,会在上下两端加一个箭头来表示还有内容,但是因为没有对应的 ObjectName 这两个箭头的风格很不好调整,需要根据它的 ClassName 获取到对象之后,采用事件监听的方式捕获它的绘图方法。以 QComboBox 为例,可以采用这种方式去画Qt控件中所有的子面板,子对象,方便个性化修改样式。
  • 来源: 石博文博客 | 浏览: 7217 | 评论: 2 | 时间: 2015-12-01
    准确的说,是“最后一个可视的主窗口被关闭时,UI线程将结束”。今天在调试一个程序的时候,程序会弹出一个 QFileDialog 供用户选择文件,但是发现当这个 Dialog 执行返回之后,整个程序都退出了,查阅了资料后发现,是 Qt 特意设置的。
  • 来源: 石博文博客 | 浏览: 5224 | 评论: 0 | 时间: 2014-08-10
    从诺基亚手中收购Qt开发套件的Digia公司宣布,将成立一家独资子公司专注于Qt的开发。官方博客解释说,Qt有一个开源版本和一个商业版本,有一个开源网站qt-project.org和商业版本网站qt.digia.com,两者之间没什么互通,开源版本和商业版本的安装程序和软件包都不同。Digia称,这种情况有弊无利,就好象是自己人之间在互相竞争,而不是Qt与其它技术进行竞争。它现在决定结束这种局面,统一开源版本和商业版本,退役网站qt.digia.com。Digia说,qt-project.org四分之三的代码递交来自该公司雇员, Qt项目85%的开发费用是它支付的。
  • 来源: 石博文博客 | 浏览: 16226 | 评论: 2 | 时间: 2014-08-09
    Qt默认是以动态链接库的方式编译和发布程序的,这样的好处是如果有多个程序使用了相同的库文件,那么操作系统只需要加载一份文件在内存中就可以了。不过,当我们发布自己的程序时,就不得不带上许多动态链接库文件,使得程序的总体积增加。在Windows环境下,Qt程序经常以静态编译链接的方式,将需要的库文件链接到程序内部,从而减小文件体积和依赖。
  • 来源: 石博文博客 | 浏览: 7653 | 评论: 0 | 时间: 2014-07-25
    最近在使用 QGLWidget 时发现,虽然 QGLWidget 继承于 QWidget 类,但默认情况下如果使用 QGLWidget 类代替 QWidget 类而且重写了 keyPressEvent 后,虽然编译运行都没有问题可总是接收不到事件。在查阅了文档后发现问题出现在 Widget 获得焦点这里,默认情况下 QGLWidget 的焦点策略为“不获得焦点”,自然不会接收到按键事件,要使它能得到焦点,需要设置focusPolicy。
  • 来源: 石博文博客 | 浏览: 9836 | 评论: 0 | 时间: 2014-07-23
    Qt中的QDrag类提供了MIME数据支持的拖放事件,使用拖放事件,用户可以更直观的移动和改变想在应用程序中使用的数据。无论是在桌面环境下还是平板电脑或其它设备中,使用拖放都可以使程序更加的方便和人性化。为了保证使用的数据可以在事件完成后被清理,QDrag事件需要实现在以QWidget为父类的元素上。本文以一个Demo实现了最常用的文件/文本拖放到应用程序的示例。
  • 来源: 石博文博客 | 浏览: 8527 | 评论: 0 | 时间: 2014-04-20
    QThreadPool 是用來管理單個的 QThread 對象, 來控制固定有多個線程並發執行, 使得程序能更充分的使用計算機的資源, 提高程序運行效率.
  • 来源: 石博文博客 | 浏览: 25465 | 评论: 27 | 时间: 2014-03-04
    Qt中的QListWidget可以实现一个列表,比如网页上经常出现的下拉列表框,其中一行就是一个ListItem,在添加时,常用的函数是QListWidget::addItem(QListWidgetItem * item),但这样只能添加QListWidgetItem这样的对象,如果想到像QQ等软件使用自定义的ListItem,一个简单的方法是自定义一个QWidget,然后使用QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget)来设置它的显示widget.
  • 来源: 石博文博客 | 浏览: 12358 | 评论: 0 | 时间: 2014-02-16
    从QT5.1开始,就慢慢加入了对Android的支持,虽然在Android上一直是Java开发占大多数,但由于Qt的结构成熟,功能强大,笔者最近也尝试了一下Qt的嵌入式开发.Qt为手持设备提供了触摸事件,但必须显式的设置接收触摸事件,之后的事件捕获与绘图都和PC上面差不多了.
  • 来源: 石博文博客 | 浏览: 6985 | 评论: 0 | 时间: 2014-02-09
    QT对socket作了简单的封装,使得在Windows和Linux下都可以用相同的上层代码来写,不需要关心底层的实现.本文示例的是使用UDP协议进行的通信.
  • 来源: 石博文博客 | 浏览: 11542 | 评论: 0 | 时间: 2014-01-27
    Qt中的事件系统是没有鼠标左右键同时点击这个事件的,可能是为了可扩充性而保留的,不过通过继承Qt中的相关控件类并且重写鼠标的一些事件函数我们可以很方便的做出鼠标左右键同时点击这个事件.
  • 来源: 石博文博客 | 浏览: 9096 | 评论: 4 | 时间: 2014-01-21
    今天用QT写了个扫雷小游戏,界面和功能都是按照WindowsXp下面的winmine来做的,因为需要Press,Release和Click这些事件,索性我就用QPushButton来做的那些小方块,把它们的Text设为空,只显示Icon,并用QGridLayout来对它们布局.但我想在QGridLayout对Button进行Resize后重新得到Button的Size,问题就出现了,我获取到了640*480这个大小.