2011-12-07 89 views

回答

2

如果您的意思是您希望在组合框显示其元素(即处于“下降”状态)时选定的项目显示为不同,您可以更改调色板或样式中的突出显示和高亮文本的颜色内QAbstractItemView

#include <QtGui> 

int main(int argc, char **argv) { 
    QApplication app(argc, argv); 

    QComboBox cb; 
    cb.addItem("Item 1"); 
    cb.addItem("Item 2"); 
    cb.addItem("Item 3"); 
    cb.show(); 

    QPalette p = cb.palette(); 
    p.setColor(QPalette::HighlightedText, QColor(Qt::red)); 
    p.setColor(QPalette::Highlight, QColor(Qt::green)); 
    cb.setPalette(p); 

    // OR ... 
    // cb.setStyleSheet("QComboBox QAbstractItemView { " 
    //     "selection-background-color: green; " 
    //     "selection-color: red; }"); 

    return app.exec(); 
} 

如果你仅仅意味着在其“崩溃”的元素的样式状态,我会看看的例子Qt的样式表参照的“Customizing QComboBox”一节你是什么试图去做。

+0

谢谢你的回答!我只是想改变组合框的下拉项选择。我不想使用背景颜色进行选择。我想使用底部边框。我设法用QMenu做到这一点: QMenu :: item { border-bottom:5px solid white; margin:3px; } QMenu :: item :: selected { border-bottom:5px solid black; margin:3px; } 并希望使用组合框下拉项目... –

11

的解决方案是

  • 创建一个ListView对象
  • 设置其样式表
  • 使用它作为组合框

这里的观点是如何:

int main(int argc, char *argv[]) 
    { 
    QApplication app(argc, argv); 
    QMainWindow * mainWindow = new QMainWindow(); 
    QComboBox * combo = new QComboBox(mainWindow); 
    QListView * listView = new QListView(combo); 
    combo->addItem("foo"); 
    combo->addItem("bar"); 
    combo->addItem("foobar"); 
    combo->addItem("fooooo"); 

    listView->setStyleSheet("QListView::item {        \ 
          border-bottom: 5px solid white; margin:3px; } \ 
          QListView::item:selected {      \ 
          border-bottom: 5px solid black; margin:3px; \ 
          color: black;         \ 
          }            \ 
          "); 
    combo->setView(listView); 


    mainWindow->show(); 
    app.exec(); 

    return 0; 
    } 

备注: 我认为,according to the Qt docs应用这种风格也应该工作......但它不。

QComboBox QAbstractItemView::item { 
    border-bottom: 5px solid white; margin:3px; 
} 
QComboBox QAbstractItemView::item:selected { 
    border-bottom: 5px solid black; margin:3px; 
} 
+0

谢谢!但还有一个问题......如何摆脱薄选框?看例子:http://vlasovsoft.net/images/1.png –

+5

事件更好的解决方案在这里展示http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem?rq=1 – bkausbk

相关问题