在激活的信号上设置组合框上的样式会导致问题

问题描述 投票:0回答:2

目前我有一个QComboBox,我想在用户做出选择时改变颜色。要做到这一点,我有一个函数调用激活信号调用setStyleSheet

void comboBoxActivated(int i){
   myComboBox -> setStyleSheet("border-width:2px; border-style:solid; border-color:red;");
}

然而,这会导致组合框在我的屏幕上被卡住打开,摆脱它的唯一方法是关闭应用程序。使用此功能更改样式是否存在问题?作为参考,我正在运行Ubuntu和QT 4.8

c++ qt
2个回答
0
投票

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;");
}


0
投票

出于某种原因,如果我强制打开和关闭该框,则更改将适用而不会出现问题

void comboBoxActivated(int i){
   myComboBox -> setStyleSheet("border-width:2px; border-style:solid; border-color:red;");
   myComboBox -> showPopup(); 
   myComboBox -> hidePopup(); 
}
© www.soinside.com 2019 - 2024. All rights reserved.