目前我有一个QComboBox,我想在用户做出选择时改变颜色。要做到这一点,我有一个函数调用激活信号调用setStyleSheet
void comboBoxActivated(int i){
myComboBox -> setStyleSheet("border-width:2px; border-style:solid; border-color:red;");
}
然而,这会导致组合框在我的屏幕上被卡住打开,摆脱它的唯一方法是关闭应用程序。使用此功能更改样式是否存在问题?作为参考,我正在运行Ubuntu和QT 4.8
Windows中的这段代码完美无缺:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->comboBox->addItem("item1");
ui->comboBox->addItem("item2");
ui->comboBox->addItem("itme3");
connect(ui->comboBox, SIGNAL(activated(int)),
this, SLOT(comboBoxActivated(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::comboBoxActivated(int i){
ui->comboBox -> setStyleSheet("border-width:2px; border-style:solid; border-color:red;");
}
出于某种原因,如果我强制打开和关闭该框,则更改将适用而不会出现问题
void comboBoxActivated(int i){
myComboBox -> setStyleSheet("border-width:2px; border-style:solid; border-color:red;");
myComboBox -> showPopup();
myComboBox -> hidePopup();
}