2011-10-03 11 views
11

通常のQComboBoxにアイテムが入力されている場合、currentIndex-1に設定されている場合、ウィジェットは空です。代わりに、ドロップダウンリストに表示されていない最初の記述テキストをコンボボックスに表示させることは非常に便利です(例えば、 " - Select Country--"、 "--Choose Topic--"など)。QComboBoxでデフォルト以外のテキストを設定するにはどうすればいいですか?

ドキュメントに何も見つかりませんでした。また、これまでの質問でも答えが見つかりませんでした。

答えて

21

コンボボックスAPIで予想されているようには見えません。しかし、あなたが最初の「正当な」アイテムとしてごを選びなさい - Country--を追加し、ユーザーが選択されてからそれを維持することができるはずと思われる基礎となるモデルの柔軟性と:

QStandardItemModel* model = 
     qobject_cast<QStandardItemModel*>(comboBox->model()); 
QModelIndex firstIndex = model->index(0, comboBox->modelColumn(), 
     comboBox->rootModelIndex()); 
QStandardItem* firstItem = model->itemFromIndex(firstIndex); 
firstItem->setSelectable(false); 

内容に応じてあなたが望む正確な振る舞いをするには、代わりにsetEnabledを使いたいかもしれません。私が何かをクリックしてからに閉じ込められてしまうとき(私はそれを好きではない

Qt, How do I change the text color of one item of a QComboBox? (C++)

:それは私が戻ってそれを設定することができ、単に異なる色のアイテムだった場合や、私は個人的にそれを好みますどこにいなくても、私がどこにいたとしても戻れない!)

+0

優秀!明らかに私は触れていないQtの一部ですが、これはカスタマイズに非常に便利です。あなたがリンクしているあなたの質問から、背景の色を変えると、私は元々想像していたものよりも非常に良く見えます。 firstItem-> setData(Qt :: lightGray、Qt :: BackgroundRole); (これをあなたの答えに加えても大丈夫です)。 – swalog

+0

@EXIT_FAILURE私はそれを試していないのであなたのコメントは私がそれを好きかどうかわからないので、あなたのコメントはあなたの選択肢をカバーすると思います。 :)しかし、はい、Qtはいくつかの独創性を提供しています。もし私たち全員がギャングアップすれば、GTKとwxWidgetsを止めることができます! : -/http://stackoverflow.com/questions/7545804/modeless-parentless-wxdialog-still-always-above-wxframe-window-in-z-order/ – HostileFork

関連する問題