我有一个Qt应用程序,我正在移植到mac。
在IconMode中的QListView或QTableView中显示了一些对象(图像),当选中时,在Windows和Linux中会突出显示(一个包含对象的矩形,有彩色背景 - 如果选中该项目,则为灰色但不焦点,如果项目具有焦点则为浅蓝色;如果选择了项目并且具有焦点,则略微更强烈的蓝色 - 这可能是基于所选颜色方案的默认选择行为。
在Mac上,唯一显示的是对象下面的一个小点,如果视图中的对象是透明的,则浅蓝色显示在对象内部 - 但没有选择矩形。如果对象具有焦点,则没有任何变化,如果对象不透明,则只显示对象下的小点。
在画布上移动对象后,mac会根据需要在边界矩形上显示选择,仅在listview和tableview内部显示边界矩形。
使用Designer创建表单...检查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上,仍然被忽略。我还没有看到任何其他背景名称。我也尝试用小写字母。
答案 0 :(得分:0)
我最终使用样式表 - 就像我的问题更新一样 - 使用osx蓝色主题的硬编码颜色值。