标签:

进阶

前面我们一再强调,Qt 使用自己的方式绘制组件。同时我们也看到,在不同的平台上,Qt 组件的样式也不尽相同。这种情况和 Swing 有些类似:Swing 使用 look and feel 定义组件的外观,Qt 同样也是。用来定义组件外观的类就是QStyle。 需要说明一点的是,组件的 style 是一个非常复杂的内容,仅在这里不可能全部讲解清楚。如果需要自定义组件 style,还是自己仔细阅读相关 ...

0 评论 2.3K 次阅读

我们先从 Style 说起。所谓 Style,也就是风格,可以理解成把程序运行起来,第一眼看上去的的样子,也就是程序的第一印象。这种第一印象往往左右着用户的想法。例如,Safari 原本是 Apple 在 MacOS 下的默认浏览器。后来,Apple 把它移植到 Windows 平台,但仍旧保留了 Apple 的外观。这样一来,尽管 Safari 看起来很华丽,却与 Windows 的风格格格不入 ...

0 评论 2.3K 次阅读

本文曾经在 51CTO 发表过,不过当时仅仅完成了一大部分,还有一些结尾没有写完。后来有一些别的变故,包括新建了这个博客,使得这个系列从此沉寂了下来。今天在这里重新完成这个系列,算是“补完计划”吧~当然,前面部分与 51CTO 上面的《编写native风格的Qt程序》系列多多少少有些雷同(确切的说是相当雷同),真正新增的部分要到最后才会出现;-P

3 评论 2.6K 次阅读

有时我们在一些应用实例中可能会遇到这么一种需求:同一个组件,比如一个 button,需要同时监听单击 click 和 双击 double click 事件。通常在列表中,这种需要更为常见一些。例如有左右两个分栏列表,点击选中,可以作一些操作;双击列表项则可以将一侧列表项移动到另一侧。

1 个评论 2.3K 次阅读

在 QVariant 中使用 enum

by 豆子

QVariant类作为 Qt Framework 提供的一种通用类型,使使用 C++ 的 Qt 获得了一种类似 Java 的 Object 的单根效果。我们可以将需要的数据存储在QVariant类中,然后将这个类作为参数传递给不同的函数。这非常类似于 C 语言的void *,后者同样也是一种通用类型。QVariant在很多场合下都是需要的,比如我们可以给QComboBox的每一项增加一个Qt::U ...

0 评论 2.4K 次阅读

QDialog::open() 考虑到前文所述的问题,我们对比一下应用程序级别模态的实现。当windowModality是Qt::NonModal的时候,只需调用QDialog::exec()就可以很容易实现。那么,为什么不提供一个类似的函数,只需简单的调用一下就可以实现一个窗口级别的模态对话框呢?答案就是QDialog::open()。QDialog::open()可以打开一个窗口级别模态对话框 ...

2 评论 2.5K 次阅读

QDialog 窗口级别模态

by 豆子

这篇文章内容主要来自 QtQuarterly30 里面的 New Ways of Using QDialog,介绍的是使用QDialog::open()(这个函数是Qt 4.5 引入的),而不是传统的exec()来实现一个窗口级别的模态对话框。所谓模态对话框,就是对话框会阻塞用户与父窗口的交互,直到对话框关闭,在 Mac OS X 中则称为 Sheet。这里牵扯到很多细节问题,值得我们注意。

4 评论 2.8K 次阅读

Qt 内存管理机制

by 豆子

强类型语言在创建对象时总会显式或隐式地包含对象的类型信息。也就是说,强类型语言在分配对象内存空间时,总会关联上对象的类型。相比之下,弱类型语言则不会这样做。在分配了内存空间之后,有两种方法释放空间:手工释放,或者是使用垃圾收集器。C++ 要求开发者手工释放内存空间。这样做的好处是,开发者对内存有完全的控制能力,知道什么时候释放比较合适。Java 则使用垃圾收集器。它在后台会有一个线程根据一定的算法 ...

4 评论 2.5K 次阅读

关于我

devbean

devbean

豆子,生于山东,定居南京。毕业于山东大学软件工程专业。软件工程师,主要关注于 Qt、Angular 等界面技术。

主题 Salodad 由 PenciDesign 提供 | 静态文件存储由又拍云存储提供 | 苏ICP备13027999号-2