QTableWidget с флажком

Мне нужно использовать QTableWidget с флажками вместо текста в элементах. Флажок должен быть в центре элемента.

Примеры, которые я пробовал, работают, пока установлен флажок. Если я сниму флажок, он исчезнет.


person Ufx    schedule 28.09.2014    source источник
comment
Вы можете опубликовать здесь хотя бы исходный код примера, где исчезает флажок?   -  person Max Go    schedule 28.09.2014


Ответы (1)


Вы можете установить флажок по центру с помощью этого кода:

   QWidget *pWidget = new QWidget();
   QCheckBox *pCheckBox = new QCheckBox();
   QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
   pLayout->addWidget(pCheckBox);
   pLayout->setAlignment(Qt::AlignCenter);
   pLayout->setContentsMargins(0,0,0,0);
   pWidget->setLayout(pLayout);
   pMyTableWidget->setCellWidget(0,0,pWidget);

(Я не знаю, хорошо ли я понял вас здесь) И если вы хотите, чтобы ваш флажок исчезал, когда вы снимаете его, вам нужно подключить сигнал щелчка флажка к слоту, который сделает ваш флажок невидимым. Используйте метод подключения следующим образом:

connect(checkbox,SIGNAL(clicked()),this,SLOT(checkboxClicked()));

Вам нужно создать слот checkboxClicked, где вы будете проверять, установлен ли флажок или нет. Если нет, то вы должны сделать его невидимым. Пример:

  QCheckBox* Chb = qobject_cast<QCheckBox *>(QObject::sender());
  if(!Chb->checked())
      Chb->setVisible(false);
person Mikołaj Mularczyk    schedule 28.09.2014
comment
+1 в реальном приложении все равно потребуется реализовать пользовательскую модель QAbstractItemModel. - person Max Go; 28.09.2014