0

私はqtreewidgetチェック可能なアイテムを持っています。状態をチェックするか、または何らかの値に基づいていない状態に変更したいのですが、最初にアイテムを作成toplevelitemsしてチェックを外すように設定すると機能しますが、その後コード内でチェックしたい場合はチェックされますただし、チェックボックスが表示されているときはチェックされていません。初めてsetstateコードは次のとおりです。

  for(int i = 0; i < PermisionDataBase.allEvents().size(); i++) {
        m_eventList->addTopLevelItem(new QTreeWidgetItem);
        m_eventList->topLevelItem(m_eventList->topLevelItemCount()-1)->setText(0, PermisionDataBase.allEvents().keys()[i]);
        m_eventList->topLevelItem(m_eventList->topLevelItemCount()-1)->setCheckState(0, Qt::Unchecked);
    }

しかし、私がそれをチェックした後、それはチェックされません

for(int j = 0; j < m_eventList->topLevelItemCount(); j++) {
m_eventList->topLevelItem(j)->setCheckState(0, Qt::Checked);

そして、if句でこのアイテムをチェックし、それらがチェックされていることを確認しましたが、アイテムが表示されていない場合、mt if句コード:

for(int j = 0; j < m_eventList->topLevelItemCount(); j++) {
        if(m_eventList->topLevelItem(j)->checkState(0) == Qt::Checked)
            qDebug() << m_eventList->topLevelItem(j)->text(0);
    }

何が悪いのか知っていますか?前もって感謝します

4

1 に答える 1

0

これは、Qt::ItemIsUserCheckable設定したフラグによるものです。aQTreeWidgetItemをチェック可能にするには、 のみを使用する必要がありますsetCheckState(0, Qt::Unchecked)

フラグを設定した行にコメントを付けると、コードが機能すると思います。

于 2014-04-23T07:35:43.540 に答える