带有单选按钮的QListWidgetItem

时间:2013-09-19 20:18:30

标签: c++ qt qt4.8

我正在处理我的第一个QT应用程序,我遇到了QListWidgetItems的问题。

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

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

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

完全符合要求。

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

  1. 可以使用我用于checkBox的相同逻辑来创建Radio Buttons吗?
  2. 我用过:

    listElement[i]->setFlags(Qt::ItemIsEnabled);
    
    QRadioButton *radio1 = new QRadioButton(0);
    
    dlList->setItemWidget(listElement[i],radio1);
    
  3. 这将显示带有单选按钮的列表中的项目,问题是文本是通过单选按钮:

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

      

    这是一个测试   Ø
      对于元素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 个答案:

答案 0 :(得分:4)

您可能已经阅读过,有两种方法可以达到您想要的效果。

  1. 最灵活的一个:使用QListView,在必要时实施新的委托和模型。
  2. 继续使用经典的基于项目的界面(QListWidget)并通过对QListWidgetItem进行子类化或调用QListWidgetItem::setItemWidget来更改项目的小部件。
  3. 由于问题指向第二个问题,我将尝试提供最简单的基于项目的解决方案。

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

    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的指针。

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