Qt: перегрузка QComboBox

#c #qt #overloading #qcombobox

#c #qt #перегрузка #qcombobox

Вопрос:

Я хочу перегрузить QComboBox для удовлетворения своих потребностей, но я не знаю, какие функции-члены должны быть перегружены и как их реализовать

Конкретные требования заключаются в следующем:

  1. Скройте текстовое поле QComboBox, измените стиль выпадающей кнопки, в общем, сделайте ее похожей на QPushButton
  2. Превратите выпадающий список в таблицу

такие , как:

введите описание изображения здесь

Комментарии:

1. Зачем вам нужно поле со списком для этого (и если вам нужно. У него есть модель данных и поддержка делегирования, которая может быть ответственна за это). Qt — это не MFC (WFC), который тоже работает исключительно из-за перегрузок. Но в данном случае это выглядит как кнопка, которая показывает меню по сигналу click()..

2. @Swift-FridayPie Если я использую меню, может ли меню быть табличным? И меню должно быть рядом с кнопкой. Я не знаю, как этого добиться. Можете ли вы рассказать мне подробно? Спасибо

3. Вероятно, вам было бы лучше использовать фактическую QPushButton вместе с пользовательским диалоговым окном, которое отображается в соответствующем месте в ответ на его clicked() siganl.

4. @JeremyFriesner пользовательский диалог или меню? Какой из них лучше

5. Меню AFAIK в Qt всегда представляют собой один вертикальный столбец (с дополнительными подменю), поэтому, если вам действительно нужен макет таблицы с несколькими столбцами, я думаю, что написать пользовательский диалог с QGridLayout было бы проще, чем пытаться взломать QMenu для выполнения чего-то, для чего он не предназначен.