为什么我在windos qt下写的修改combobox的滑动块宽度代码,在Linux 的qt环境下没有效果啊,大家知道怎么改吗
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;}");
//这是我在window条件下的,Linux条件下怎么写呢
在Linux的Qt环境下,可能需要稍微调整一下样式表中的属性。你可以尝试以下代码:
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;}"
"QScrollBar::handle:vertical {background: grey;min-height: 50px;}"
"QScrollBar::add-line:vertical {border: none;background: none;}"
"QScrollBar::sub-line:vertical {border: none;background: none;}");
这个样式表设置了滚动条的宽度和颜色,并增加了滑块的高度。在Linux下,可能需要指定更多的属性才能正确地渲染滚动条和滑块。
该回答引用ChatGPT
在Linux条件下,可以将样式表中的"grey"改为相应的颜色值,并使用适当的CSS语法:
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid #888;width: 80px;}");
其中,"#888"是灰色的十六进制颜色值,您可以根据需要更改颜色值以获得所需的颜色。此外,如果您想更改其他样式属性,可以使用类似的CSS语法。
可能是因为在 Windows 和 Linux 下 Qt 的样式表实现有所不同。你可以尝试使用不同的样式表属性来实现相同的效果,例如在 Linux 下使用 min-width 替代 width。
你可以尝试使用如下样式表代码来设置滚动条宽度:
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey; min-width: 80px;}");
另外,如果你需要在不同平台下应用不同的样式表,可以使用 Qt 的跨平台样式表语法,例如:
QScrollBar:vertical {
border: 2px solid grey;
width: 80px;
}
#ifdef Q_OS_WIN
QComboBox {
/* Windows 样式 */
}
#endif
#ifdef Q_OS_LINUX
QComboBox {
/* Linux 样式 */
}
#endif
这样就可以根据不同的操作系统应用不同的样式表。
#include <QStyleFactory>
ui->comboBox->setStyle(QStyleFactory::create("Windows"))
该回答引用ChatGPT,若对您的问题有帮助,望采纳!
首先,需要了解的是,虽然 Windows 和 Linux 都使用 Qt 框架,但它们的操作系统和外观等方面有很大的不同,因此在编写跨平台应用时需要注意这些差异。
针对您的问题,您在 Windows 下使用了 Qt 样式表来修改 combobox 的滚动条宽度,但在 Linux 环境下没有生效。这可能是因为 Linux 的 Qt 样式表和 Windows 的不同,导致相同的样式表代码在不同操作系统下表现不同。
要在 Linux 环境下修改 combobox 的滑动条宽度,您可以尝试使用下面这段代码:
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;} QComboBox::drop-down {border: 0px;}");
这段代码与您在 Windows 环境下使用的代码相似,只是在后面添加了一个用于去掉 combobox 下拉箭头边框的样式表。
当然,这只是一个可能的解决方案,如果还是无法生效,您可能需要对 Linux 的 Qt 样式表进行更深入的了解,并尝试适配不同操作系统的样式表。
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;}"); //这是我在window条件下的,Linux条件下怎么写呢?
QScrollBar:vertical {
border: 2px solid grey;
width: 80px;
background: #eee;
margin: 0px 20px 0 20px;
}
和arm 环境下的编译有点关系,得在arm环境也能修改
可以尝试使用以下语法来设置ComboBox中滑动条的宽度:
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;}");
以下答案基于ChatGPT与GISer Liu编写:
Qt 的界面在不同操作系统上的外观可能会略有不同,因此您需要为不同的操作系统编写不同的样式表。
为了在 Linux 下设置
QComboBox
的垂直滚动条宽度,您可以使用以下样式表:css
QScrollBar:vertical { border: 2px solid grey; width: 80px; } QComboBox QAbstractItemView:vertical { width: 80px; }
这将为
QComboBox
中的QAbstractItemView
设置一个垂直滚动条宽度。在代码中应用这个样式表:
css
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;}" "QComboBox QAbstractItemView:vertical {width: 80px;}");
请注意,为了在同一行上设置两个不同的样式表,我们使用了一个字符串连接运算符
+
,使两个样式表放在同一个字符串中。在 Windows 下,您可以使用原始的样式表,如您在问题描述中所示:
css
ui->comboBox->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;width: 80px;}");
这应该会在 Windows 下工作。