чередование цветов строк в QComboBox в Mac и Linux - PullRequest
2 голосов
/ 25 октября 2011

Я хочу чередовать цвета QComboBox. В Windows у меня нет проблем с использованием функции view (). SetAlternatingRowColors (true). В Linux и Mac это выглядит невозможно. Я также пытался использовать таблицу стилей (см. Следующий код), но у меня были одинаковые результаты (все строки с одинаковым цветом фона). Можете ли вы объяснить мне, в чем моя ошибка?

#include <QtGui/QApplication>
#include <QComboBox>
#include <QAbstractItemView>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setStyleSheet("QComboBox QAbstractItemView{qproperty-alternatingRowColors: true;alternate-background-color: blue;background: red;}");
    QComboBox b;
    b.addItem("MM_NONE");
    b.addItem("MM_VERT");
    b.addItem("MM_FACE");
    b.addItem("MM_EDGE");
    bool tt = false;
    tt = b.view()->alternatingRowColors();
    b.show();
    return a.exec();
}

1 Ответ

3 голосов
/ 25 октября 2011

По крайней мере, на моем боксе кажется, что QPalette::Base и QPalette::AlternateBase - это один и тот же цвет :) Изменение QPalette::AlternateBase на другой цвет делает этот код хорошо работающим:

#include <QtGui/QApplication>
#include <QComboBox>
#include <QAbstractItemView>
#include <QPalette>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QComboBox b;
    b.view()->setAlternatingRowColors(true);

    QPalette p = b.palette();
    p.setColor(QPalette::AlternateBase, Qt::red);
    b.setPalette(p);

    b.addItem("MM_NONE");
    b.addItem("MM_VERT");
    b.addItem("MM_FACE");
    b.addItem("MM_EDGE");
    b.show();
    return a.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...