يحتوي QTableView على مربعات اختيار غير مرغوب فيها في كل خلية
-
25-09-2019 - |
سؤال
لقد بدأت للتو في برمجة 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 في مصمم QT ، وداخل الفصل لحوار الحوار أقوم بإرفاق النموذج بعرض مثل هذا:
MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);
بخلاف ذلك ، لا أقوم بأي عمليات على ui.testTable
.
باستخدام QT 4.6.
المحلول
حاول التغيير MyTableModel::data()
الى الآتى الى القادم الى الم:
QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
if (role == Qt::DisplayRole)
return "foo";
else
return QVariant();
}
من المحتمل أن يكون Qvariant للعودة للدور Qt::CheckStateRole
كان يساء فهمه من قبل qtableview.
نصائح أخرى
هل تحدث بأي فرصة لتعيين ملف qt :: itemIsuserCheckable العلم في أعلام ()?