3

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

我将有不同类型的列表。对于复选框列表,使用:

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

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

完全按照需要工作。

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

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

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

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

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

这是元素 1的测试
o

而不是我有的复选框

   This is a test  

[]

   for element 1

如何让 radioButton 与文本正确对齐?

新问题:

非常感谢您的回答,我的文字现在在我的 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);
4

1 回答 1

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

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

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

于 2013-09-20T02:53:16.703 回答