2013-09-19 13 views
2

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

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

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

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

работает именно так, как хотел.

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

  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); 

ответ

3

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

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

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

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

enter image description here

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, который содержит элементы.

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

+0

Спасибо, он работает, я добавил вторую часть к исходному вопросу – DavidG

Смежные вопросы