Linux和Windos条件下qt不同语法

为什么我在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环境也能修改

https://www.baidu.com/link?url=EcaDyUjag6CZCdPq8ufTEOhHVmFI2XtfySlIjEI9pKgrr-cWkWd8fn0q2VcwcrxE0S9BSevOXIMFDuffgqfEQt0yvHnEzuMCF-8E5fRywFe&wd=&eqid=d6d6ba9b000e74f10000000263f3221e

可以尝试使用以下语法来设置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 下工作。