2011-10-25 6 views
2

QComboBoxの色を交互に変更したいと考えています。 Windowsではview()。setAlternatingRowColors(true)関数を使っても問題はありません。 LinuxとMacでは、不可能と思われます。私はスタイルシート(次のコードを参照)も使用しようとしましたが、同じ種類の結果(同じ背景色を持つすべての行)がありました。私のエラーは何ですか?MacとLinuxのQComboBoxで行の色を交互に変更する

#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(); 
} 

答えて

3

は、少なくとも私のボックスにQPalette::BaseQPalette::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(); 
} 
+0

私は前にそれを試してみましたが、私はそれを再試行今あなた自身のコードで(いつも愚かな間違いを起こすことができます)、残念ながら私のUbuntu 11.10と私のMac OSX 10.6.8では私は私が待っていた結果がありません。 Windowsでは完全に動作しますが、LinuxやMacでは動作しません。私はマルチプラットフォームのコードを書く必要があります。 –

+0

また、私のGentoo Linuxであなたのスタイルシートソリューションが正常に動作しました... Qt 4.7.3を使用しています – ayoy

+0

これは私のf **** g Ubuntuの問題です... –

関連する問題