【问题标题】:Selected objects on Mac show background highlight instead of bounding rectangle highlightMac 上的选定对象显示背景突出显示而不是边界矩形突出显示
【发布时间】:2014-11-12 03:20:35
【问题描述】:

我有一个要移植到 mac 的 Qt 应用程序。

QListView 或 QTableView 中的 IconMode 中显示了一些对象(图像),当被选中时,在 Windows 和 Linux 中会突出显示(一个包含对象的矩形,具有彩色背景 - 如果项目被选中但没有被选中,则为灰色焦点,如果项目具有焦点,则为浅蓝色,如果项目被选中并具有焦点,则蓝色稍微更强烈 - 这可能是选择的默认行为,基于选定的配色方案)。

在 mac 上,唯一显示的是对象下方的一个小点,如果视图中的对象是透明的,则对象内部会显示浅蓝色 - 但没有选择矩形。如果对象有焦点,则没有任何变化,如果对象不透明,则仅显示对象下方的小点。

一旦对象在画布上移动,mac 会根据需要在边界矩形上显示选择,只有在 listview 和 tableview 内边界矩形是不可见的。

表单是使用设计器创建的... listView 属性QListView.selectionRectVisible 已选中。

我看不出是什么导致了这种情况发生......但我已经尝试过

#if defined (Q_OS_MACX)
    m_ui->lv1->setAttribute(Qt::WA_MacShowFocusRect, true);
    m_ui->lv1->UseCustomSelectionColors(true);  // documentation shows this but it doesn't build
    m_ui->lv1->setSelectionRectVisible(true);
#endif

对于mac,并没有什么区别。

我还能尝试什么来显示对象的选择?

Qt 4.8

编辑:找到了一个站点,其中包含tiled list view 的示例...除此之外,它在所选项目周围绘制了一个可见的矩形...

这似乎是一种非常复杂的方法来做一些似乎已经实现的事情 - 突出显示选定的对象 - 如果必须的话我会这样做,但我希望我不必为 mac 添加太复杂的东西版本,不会在任何其他平台上使用...

必须有一种方法使用 listview 和 tableview 的普通属性和方法来确保边界矩形的背景,而不仅仅是项目的背景,在进行选择时显示?

不知道这是不是典型的mac行为……

更新

虽然我真的尽量不覆盖期望的默认系统行为,但我尝试强制列表行为...

#if defined (Q_OS_MACX)
    QString stylesheet = "";
    stylesheet += "QListView::item:selected:active:hover{background-color:red;}";
    stylesheet += "QListView::item:selected:active:!hover{background-color:blue;}";
    stylesheet += "QListView::item:selected:!active{background-color:yellow;}";
    stylesheet += "QListView::item:!selected:hover{background-color:green;}";
    setStyleSheet(stylesheet);
#endif

问题是,我需要系统颜色,我无法定义自己的颜色,因为它们与应用程序窗口的其余部分不匹配......

悬停、选择(强)、选择(但没有焦点)、选择(但未激活)的系统颜色名称是什么?

我尝试过使用

stylesheet += "QListView::item:selected:active:hover{background-color:Highlight;}";

在 Windows 中,这看起来没问题 - 因为它可能无法识别,因此被忽略...在 mac 上,仍然被忽略。而且我还没有看到任何其他背景名称。我也试过小写。

【问题讨论】:

  • 您是否考虑将 Qt 样式表作为选项?我相信,可以在样式表中为 mac 平台指定特定的选择颜色。
  • @N1ghtLight - 我已更新尝试使用样式表,但没有成功

标签: c++ macos qt listview


【解决方案1】:

我最终使用了一个样式表——就像我的问题的更新一样——为 osx blue 主题使用了硬编码的颜色值。

【讨论】:

    猜你喜欢
    • 2012-12-24
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多