Intereting Posts
c ++ увеличить время ожидания asio для блокировки соединения Внедрение инициализатора массива Скобки в конце выражения lambda C ++ 11 может кто-то объяснить этот короткий сегмент кода на C ++, я не могу сделать из него головы или хвосты boost :: bind с защищенными членами и контекстом Выполнение векторной сортировки / уникальной / стирания против копирования в неупорядоченный_set Стандартная формулировка на C ++: означает ли «через все iteratorы в диапазоне» последовательность? Стоит ли изучать Eclipse для разработки на C ++? Преобразования верхнего и нижнего регистров C / C ++ UTF-8 Явный деструктор в шаблоном контексте Ошибка libpng: Ошибка чтения Получение текущего времени в виде строки YYYY-MM-DD-HH-MM-SS Есть ли причины не использовать Visual Studio 6 для C ++? Попытка понять, как реализовать пользовательский сервис Boost.Asio как осуществляется внедрение multi_index

QListWidgetItem с кнопкой радио

Я работаю над своим первым приложением QT, и у меня проблема с QListWidgetItems .

У меня будет другой список. для списка с использованием:

 listElement[i]->setFlags(Qt::ItemIsEnabled); listElement[i]->setCheckState(Qt::Unchecked); 

работает точно так же, как хотелось.

Но теперь я хочу список Radio Button. поэтому мой вопрос состоит из двух частей

  1. может использовать ту же логику, которую я использовал для checkbox для создания кнопок радио?
  2. Я использовал:

     listElement[i]->setFlags(Qt::ItemIsEnabled); QRadioButton *radio1 = new QRadioButton(0); dlList->setItemWidget(listElement[i],radio1); 

это отобразит Элементы в списке с помощью кнопки «Радио», проблема в том, что текст находится над кнопкой «Радио»:

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

Это тест
о
для элементов 1

вместо этого у меня есть флажок

  This is a test 

[]

  for element 1 

как я могу заставить radioButton правильно выровнять текст?

Новые вопросы:

Большое спасибо за ответы, мой текст находится рядом с моим RadioButton.

Единственное, что не существует WordWrap, мой текст длиннее максимального размера RadioButton. Как я могу получить его в wordwrap:

 rButton = new QRadioButton(); rButton->setFixedSize(LIST_TEXT_WIDTH_WO_ICON, LIST_TEXT_HEIGHT); rButton->setStyleSheet("border:none"); rButton->setFont(segoe18Font); rButton->setText("This is just a test for elementsss of type euh!!!"); rButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); dropListWidget->setItemWidget(listElement, rButton); 

Как вы, возможно, читали, есть два подхода к достижению того, что вы хотите.

  1. Самый гибкий: используйте QListView , при необходимости QListView новый делегат и модель.
  2. Продолжайте использовать classический интерфейс на основе QListWidget ( QListWidget ) и измените виджеты элемента либо путем подclassификации QListWidgetItem либо для вызова QListWidgetItem::setItemWidget .

Поскольку вопрос указывает на второй, я постараюсь предоставить простейшее решение на основе элементов.

Следующий fragment кода генерирует виджет списка на картинке.

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

 QListWidgetItem *it; it = new QListWidgetItem(ui->listWidget); ui->listWidget->setItemWidget(it, new QRadioButton(tr("Item 1"))); it = new QListWidgetItem(ui->listWidget); ui->listWidget->setItemWidget(it, new QRadioButton(tr("Item 2"))); // . // . // . it = new QListWidgetItem(ui->listWidget); ui->listWidget->setItemWidget(it, new QRadioButton(tr("Item N"))); 

где ui->listWidget – это указатель на QListWidget , содержащий элементы.

Надеюсь, это поможет. Насколько я понимаю, это то, что вам нужно.