19

QComboBoxが に設定されている場合、アイテムcurrentIndexが設定された通常のウィジェットを使用する-1と、ウィジェットは空になります。代わりに、ドロップダウン リストに表示されない最初の説明テキストをコンボ ボックスに表示すると非常に便利です (例: "--国を選択--"、"--トピックを選択--" など)。

ドキュメントには何も見つかりませんでしたし、回答のある以前の質問も見つかりませんでした。

4

3 に答える 3

28

Combo Box API で想定されていたケースはないようです。しかし、基礎となるモデルの柔軟性により、--Select 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、QComboBox の 1 つの項目のテキストの色を変更するにはどうすればよいですか? (C++)

(何かをクリックした後、何も選択されていない状態であっても元の場所に戻れない場所に閉じ込められるのは好きではありません!)

于 2011-10-03T09:17:03.020 に答える