27

Qtプログラミングを始めたばかりで、QTableViewから継承した自分で作成したモデルクラスのコントロールを使用して、単純な表形式のデータレイアウトを作成しようとしていQAbstractTableModelます。何らかの理由で、私のテーブルビューは次のようになります。

代替テキスト
(出典:nerdland.net

すべてのセルでチェックボックスのように見えるもの(ただし、クリックしても何もしない)は一体何であり、どのようにしてそれらを消すことができますか?QTableViewオブジェクトの名前以外のプロパティは変更していません。

重要な場合、私のモデルコードは非常に単純です。

MyTableModel::MyTableModel(QObject* parent)
  : QAbstractTableModel(parent)
{
}

MyTableModel::~MyTableModel()
{
}

int MyTableModel::rowCount(const QModelIndex& parent) const
{
  return 1000; 
}

int MyTableModel::columnCount(const QModelIndex& parent) const
{
  return 5;
}

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
  return "Foo";
}

ダイアログUIはQtDesignerに組み込まれており、ダイアログのクラス内で、次のようにモデルをビューにアタッチします。

MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);

それ以外は操作を行いませんui.testTable

Qt4.6を使用します。

4

2 に答える 2

55

MyTableModel::data()次のように変更してみてください。

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
    if (role == Qt::DisplayRole)
        return "foo";
    else
        return QVariant();
}

おそらく、ロールに対して返さQt::CheckStateRoleれたQVariantは、QTableViewによって誤解されていました。

于 2010-03-07T16:31:17.133 に答える
2

Do you by any chance happen to set the Qt::ItemIsUserCheckable flag in flags()?

于 2010-03-07T16:11:09.690 に答える