小编Hor*_*ter的帖子

用C++编写的VS2010调试器,意思是"unused = ???" 或"unused = 0"

调试在Visual Studio 2010(C++,非托管),什么是信息unused ???还是unused 0什么意思?我附上了两个截图,孩子是一个HWND现有的窗口.

我也感到困惑的HWND是,有时候显示为"未使用",有时显示为"0".当指针指向未分配的内存时,我会理解这种情况,但在我的特定情况下,窗口已经创建并且有效.

VS2010未使用= ???

VS2010未使用= 0

c++ debugging remote-debugging visual-studio-2010

6
推荐指数
1
解决办法
3288
查看次数

从 Qt::Key 到原生键盘代码

有没有办法转换回Qt::Key本机键盘代码(扫描代码或虚拟键代码)?

QKeyEvent 有两种方法:

nativeScanCode () const
quint32 nativeVirtualKey () const
Run Code Online (Sandbox Code Playgroud)

所以某处需要在本机代码和Qt:Key. 我正在寻找反函数Qt:Key-> 本机代码

根据“如何将 Windows 本机虚拟键代码转换为 Qt::Key? ”,我希望有映射,qt\src\gui\kernel\qkeymapper_win.cpp但我的 src 路径(Qt 5.2)中不存在此文件。

——编辑(萨摩斯的回答)——

我现在可以找到文件了,这是我的愚蠢错误。我真正在寻找的是一种方法

  1. 要么转换Qt:Key为本机/虚拟代码
  2. 或相反亦然

不幸的是,到目前为止我还没有找到这种方法。

c++ qt

6
推荐指数
0
解决办法
1911
查看次数

Qt C++项目的简单安装程序,仅针对Windows

对于一个小型的C++/Qt项目,我想创建一个安装程序.

  1. 用Qt Creator编写的代码
  2. 基本上(当添加了一些Qt dll时),可以进行简单的xcopy安装
  3. 我可以打包(zip/rar)文件,但我想"有一点安装程序的感觉"
  4. 没有注册表条目等.
  5. 代码仅适用于Win Desktop,因此没有跨平台要求

基本上安装人员应该

  1. 要求目标目录
  2. 要求许可接受
  3. ..并安装

从我的角度来看(作为程序员),安装程序应该易于设置和学习.如果我可以在Qt Creator中创建它,我会很理想.由于它是用于非商业开源项目,因此安装程序软件必须是免费的(或者至少是非常合理的价格).

你会推荐什么?

c++ installer qt qt-creator

5
推荐指数
1
解决办法
1081
查看次数

使用样式表自定义QDial

有针对的样式表综合例子QWidgets 在这里.遗憾的QDial是,这些例子中缺少.

我可以通过样式表更改外观(基本上是旋钮的颜色,边框)吗?在本文中,一个新的拨号类支持样式表,但是不能用Qt的标准类完成吗?

滑块/滚动条示例显示了如何调整每个细节,所以我想知道是否有类似的东西QDial?我知道我可以交换底层图像,但更喜欢一种简单的方法来设置它的颜色,边框.

我已经试过了标准的属性,如backgroud-color,background,color没有成功.也尝试了QDial::handle,所以提示将是有用的.

qt qwidget qtstylesheets qdial

5
推荐指数
1
解决办法
5826
查看次数

Qt Creator,使用分支名称构建目录

基于我使用的几个工具包,Qt Creator 构建目录来自

  • 项目名
  • Qt版
  • 编译器
  • 构建配置:调试/发布

例子: build-client-Qt_5_3_0_fooProject_MINGW_32bit_qmake_MinGW22-Debug

我的问题是,如果我切换我的 git 分支,我总是必须从头开始重新编译(耗时)。我想知道是否可以包含分支名称,以便我可以同时保留不同的构建

=> 可能的构建目录:

  • build-client-Qt_5_3_0_fooProject_MINGW_32bit_qmake_MinGW22-Debug_master
  • build-client-Qt_5_3_0_fooProject_MINGW_32bit_qmake_MinGW22-Debug_branchbar

或者是否有机会添加第三个构建配置,例如Debug_others,生成一个构建目录,例如

build-client-Qt_5_3_0_fooProject_MINGW_32bit_qmake_MinGW22-Debug_others

c++ git qt qt-creator

5
推荐指数
1
解决办法
744
查看次数

隐藏 Qt 选项卡的标签文本而不将文本设置为空字符串

我只需要一个QTabWidget带图标的:

如何在 Qt 中隐藏选项卡的标签文本?我无法将文本设置为空字符串 ( ""),因为我使用的是停靠的小部件 ( QDockWidget) 并且标签文本是自动设置的(如果小部件是浮动的,我需要它)。

但是在选项卡模式下,我只想显示(选项卡的)图标。可能的方法:

  1. 字体大小为0?
  2. 我需要创建我自己的 bar 类并像这里一样覆盖绘画事件

有什么更容易/更清洁的吗?

- - 编辑 - -

好的,“将窗口标题设置为空字符串,并将其重置为原始文本”方法有效。我正在topLevelChanged为此使用信号。然而,它有一些缺点,因为空文本仍然占据一些空间。另一个问题,文本工具提示消失了,我无法将其设置回来。

仍然消耗了一些空间

我目前正在尝试的是介于“文本空白”和普拉萨德席尔瓦的方法之间的东西。我尝试识别选项卡内的文本标签并将其大小设置为 0,然后重置它。它略有不同,但会保持文本完整。

顺便说一句,我在我的标签顶部看到一条线,知道这是什么(它来自哪里)?编辑:对此似乎没有“简单的方法”(样式表、属性),请参阅在 QTabBar 中隐藏底线

也许我会自己创建整个标签栏,因为自动生成的东西太难处理了(在这点上同意 PS)。

c++ qt qdockwidget qtabwidget qtwidgets

5
推荐指数
1
解决办法
1844
查看次数

C++命名空间(选择器)中派生类的Qt样式表

我想将我的全局qss样式表与派生类一起使用.我知道我必须覆盖paintEvent(样式表参考,或在这里).

void CustomWidget::paintEvent(QPaintEvent *) {
     QStyleOption opt;
     opt.init(this); // tried initFrom too, same result=>not working
     QPainter p(this);
     style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
 }
Run Code Online (Sandbox Code Playgroud)

但是,它似乎不起作用.使用CDerived:QWidget和我面对的以下样式表行:

CDerived { background-color: black; } // no effect
QWidget {  background-color: black; } // works
Run Code Online (Sandbox Code Playgroud)

CDerived实施paintEvent如上.还有什么我需要做的吗?

- 编辑/解决方案 -

感谢JK的提示,我已经弄明白了.我上面的例子实际上没有正确反映我的场景.我真正的类位于C++命名空间中(我错过了我的错误).所以我必须写MyNamespace--CDerived在qss中.请参阅" C++命名空间内的小部件 "

在我尝试了JK的简单例子后,我突然意识到自己的错误!

纠正一个:

MyNamespace--CDerived { background-color: black; } // works, use -- for ::
Run Code Online (Sandbox Code Playgroud)

备注:相关问题问题(a,b),但没有回答这个特定问题.我的派生类驻留在C++命名空间中.

c++ qtstylesheets qt5.3

5
推荐指数
1
解决办法
2142
查看次数

QTableView 中仅可编辑复选框的列

我有一个带有复选框的列QTableView。该复选框由以下生成:

  1. 返回Qt::ItemIsUserCheckable覆盖的flags成员函数
  2. 在重写的data()函数中,我根据数据返回一个Qt::CheckStateforrole == Qt::CheckStateRole

有效,见截图。

但在复选框旁边,我在列中有一些可编辑的文本框。我怎样才能摆脱这个文本框(我在其中输入了“dsdsdsds”进行演示?澄清一下,复选框应该是可编辑的,但没有别的。

读取模式 编辑模式


根据要求,我只能显示简化版

Qt::ItemFlags MyClass::flags(const QModelIndex &index) const {
 Qt::ItemFlags f = QAbstractListModel::flags(index);
 ... return f if index is not target column ....
 // for target column with checkbox
 return (f | Qt::ItemIsEditable | Qt::ItemIsUserCheckable; )
}


QVariant MyClass::data(const QModelIndex &index, int role) const {
  .. do something for other columns
  .. for checkbox column
  if (role != Qt::CheckStateRole) { …
Run Code Online (Sandbox Code Playgroud)

c++ qwidget qtableview qcheckbox qt5.3

5
推荐指数
1
解决办法
5837
查看次数

将样式表应用于QTextEdit中的HTML内容

我有一个我在QTextEdit哪里显示一些HTML.我可以将样式表应用于HTML内容吗?

不要将它与应用Qt样式表混淆QTextEdit(我知道).我想改变QTextEdit小部件中的内容("HTML").

---编辑----

相关:Qt库中控件的默认HTML样式

qt qtextedit qtstylesheets

5
推荐指数
1
解决办法
5596
查看次数

Qt qss中的size“1em”是什么意思,如果没有字体大小em?

截至 Qt 5文档说:

支持的单位有: px:像素 pt:一个点的大小(即 1/72 英寸) em:字体的 em 宽度(即 'M' 的宽度) ex:字体的 ex 宽度字体(即“x”的高度) 但是,Qt 的字体大小仅限于 pt 和 px,任何其他大小都必须以 px、em 或 ex 为单位。

当他们说1emis equal 时"M",他们指的是哪个 M?他们使用哪种字体和 pt 大小来计算?根据其他一些答案,我可以推测它是一些 12pt 字体,但是哪个?

这个问题有一个背景:我们的 Qt 应用程序在 Windows 和 Linux 下具有正常的用户体验,但在 Mac OS 上,字体显得很小。如果我能够弄清楚 pt 与 em 的关系,我可以为 MacOS 设置更好的字体默认值。

em 到 pt 的转换:

qt qwidget qtstylesheets

5
推荐指数
0
解决办法
2651
查看次数