小编Gar*_*chc的帖子

没有带QStyleOptionButton的图标

我有一个奇怪的问题.

我需要在QTableView中有一些按钮.我以前使用QAbstractItemView :: setIndexWidget()方法,但在处理大型模型时它不是很负责任.因此我决定切换到QStyledItemDelegate.我的按钮有图标(仅限图标,无文字).使用setIndexWidget时,我使用了以下代码:

ClientDetailsButton::ClientDetailsButton(const Client* _client,
                                         QWidget* _parent) :
    QPushButton("", _parent),
    __current(_client) {

  setIcon(QIcon(":/uiIcons/button-details.png"));
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好.但是当我切换到委托时,我会这样使用它:

QStyleOptionButton button;
button.rect = _option.rect;
button.text.clear();
button.icon = QIcon(":/uiIcons/button-details.png");
button.state = _option.state | QStyle::State_Enabled;

if (_index == __button)
  button.state |= QStyle::State_Sunken;

QApplication::style()->drawControl(QStyle::CE_PushButton, &button, _painter);
Run Code Online (Sandbox Code Playgroud)

按钮本身很好,但它是空的.没有可见的图标.令人惊讶的是,当我使用时,例如:

button.icon = QIcon::fromTheme("dialog-information", QIcon(":/uiIcons/button-details.png"));
Run Code Online (Sandbox Code Playgroud)

主题图标可见.但如果Qt找不到主题图标,则替换仍然是空白.我尝试了所有我能想到的东西,并且不知道为什么它不起作用.有人有什么想法吗?

c++ qt delegates qpushbutton

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

Qt5 与 CMake:如何找到 qt 翻译目录?

我目前正在致力于将我的应用程序移植到 Qt5。我使用 CMake 作为我的构建系统。对于 Qt4,我使用 QT_TRANSLATIONS_DIR 变量将预编译的 Qt 翻译复制到目标目录。然而,Qt5 没有定义任何这些特定变量。我知道命令

qmake -query QT_INSTALL_TRANSLATIONS
Run Code Online (Sandbox Code Playgroud)

为我提供了 Qt 翻译在我的系统上安装位置的正确路径。我想使用它,但现在我不知道如何获取qmake可执行路径。我尝试使用

Qt5Core_QMAKE_EXECUTABLE
Run Code Online (Sandbox Code Playgroud)

变量,但它给了我“Qt5::qmake”,这不是正确的可执行文件。

我想看到的是 Qt 每个目标的属性列表,以了解如何获取特定变量,但我在互联网上找不到类似的内容。CMake 文档没有回答我的问题。

如何使用 cmake 和 qt5 获取 qt 翻译的路径?预先感谢您的答复。

c++ qt cmake internationalization qt5

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

标签 统计

c++ ×2

qt ×2

cmake ×1

delegates ×1

internationalization ×1

qpushbutton ×1

qt5 ×1