QScrollBar在编译到Desktop和嵌入式Linux环境之间有区别

时间:2014-09-30 14:31:51

标签: linux qt embedded qcombobox qscrollarea

最近我在this question来到了SO,问我怎样才能得到QComboBox' QScrollBar为了改变它的厚度。阅读完回复后,我尝试了我的Qt Embedded应用程序的Marco A.解决方案,但它没有奏效。然后,为了测试,我将编译环境更改为Desktop并且修复工作正常!

基本上我的问题是,当我尝试在Qt中为嵌入式Linux(ARM)更改QComboBox的QScrollBar宽度时,没有任何反应,但如果我为Qt for Desktop编译完全相同的代码,它就可以工作。以下是我用于测试的代码:

QAbstractItemView* poView = ui->comboBox->view();
QScrollBar* poBar = poView->verticalScrollBar();
poBar->setStyleSheet("width: 50px;");

并且还有另一个代码执行相同的操作,但显示了同样的问题:

ui->comboBox->setStyleSheet("QScrollBar:vertical { width: 50px; }");

在Qt Designer中(在Qt Creator中)以ui形式声明comboBox

桌面和Qt for Embedded Linux的Qt版本相同(4.8.5)。我发现奇怪的另一件事(但应该与它无关)是为Desktop再次编译相同的代码显示了一个具有Windows XP风格的QComboBox,而对于Embedded,则使用了Plastique风格(我注意到由于Plastique而非常清楚)显示三个而不是两个按钮来滚动滚动条。)

那么可能会发生什么?我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

我注意到了同样的症状。在Qt中,很多绘图,我理解,已被委托给样式,而Plastique样式似乎有一个错误,因为它似乎没有在右坐标中绘制垂直滚动条,如果它没有&# 39; t具有默认大小。所以,如果你这样做:

QScrollBar:vertical
{
    min-width: 35px;
    width: 35px;
}

你最终会得到你描述的症状。但是,AFAICS在处理保证金方面也存在问题!如果你玩边缘,例如像这样:

QScrollBar:vertical
{
    min-width: 35px;
    width: 35px;
    margin-right: 35px;
}

你应该能够解决这个问题。

至少为我工作。

答案 1 :(得分:0)

poBar->setMinimumWidth(50);
poBar->setMaximumWidth(50);

我用Python3语法中的PyQt5,QT5尝试了它,它自定义了Linux(Ubuntu 14.04)和Windows7上的Scrollbar的宽度