带单选按钮的 QListWidgetItem

Dav*_*idG 3 c++ qt qt4.8

我正在开发我的第一个 QT 应用程序,但我遇到了QListWidgetItems.

我会有不同种类的清单。对于复选框列表,使用:

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

listElement[i]->setCheckState(Qt::Unchecked);
Run Code Online (Sandbox Code Playgroud)

完全按预期工作。

但现在我想要一个单选按钮列表。所以我的问题分为两部分

  1. 可以使用与 checkBox 相同的逻辑来创建单选按钮吗?
  2. 我用过了:

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

这将在列表中显示带有单选按钮的项目,问题是文本在单选按钮上:

将尝试在没有图像的情况下进行演示

这是 元素 1的测试
o

而不是我有的复选框

   This is a test  
Run Code Online (Sandbox Code Playgroud)

[]

   for element 1
Run Code Online (Sandbox Code Playgroud)

如何让单选按钮与文本正确对齐?

新问题:

非常感谢您的回答,我的文字现在就在我的 RadioButton 旁边。

唯一没有 WordWrap,我的文本长于 RadioButton 的最大大小。我怎样才能让它自动换行:

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);
Run Code Online (Sandbox Code Playgroud)

mhc*_*rvo 6

您可能已经读过,有两种方法可以实现您想要的。

  1. 最灵活的一个:使用 a QListView,在必要时实现一个新的委托和一个模型。
  2. 继续使用经典的基于项目的界面 ( QListWidget) 并通过子类化QListWidgetItem或调用QListWidgetItem::setItemWidget.

由于问题指向第二个问题,我将尝试提供最简单的基于项目的解决方案。

以下代码生成图片中的列表小部件。

在此处输入图片说明

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")));
Run Code Online (Sandbox Code Playgroud)

whereui->listWidget是指向QListWidget保存项目的指针。

我希望这有帮助。据我了解,这就是你所需要的。