كيف تحصل على ارتفاع الصف الصحيح في QT لكائن QTableView؟
-
02-10-2019 - |
سؤال
من لقطة الشاشة هذه ، يمكنك رؤية مساحة كبيرة داخل الصفوف:
لقد استخدمت هذه الوظائف للحصول على تغيير حجم:
resizeRowsToContents();
resizeColumnsToContents();
كيف يمكنني الحصول على ملاءمة أفضل لأحجام الخلايا/الصفوف؟
المحلول
جرب هذا:
verticalHeader()->setDefaultSectionSize(int size)
horizontalHeader()->setDefaultSectionSize(int size)
نصائح أخرى
جرب هذا:
void QHeaderView::setResizeMode(QHeaderView::ResizeToContents);
أنا أستخدم QT 4.7 وهذا عمل بالنسبة لي QTableView
:
tableView->resizeColumnsToContents();
tableView->resizeRowsToContents();
tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
لدي نفس المشكلة ، وكذلك الحال بالنسبة للآخرين على ما يبدو:
http://www.qtforum.org/article/13421/qtableview-how-to-make-tows-size-smaller.html
وظيفتي السريعة للاختراق لجدول بسيط مع عدد قليل من الصفوف فقط (افترض أن جميع الصفوف لها نفس ارتفاع النص ، وربما هذا يعمل فقط لبعض الخطوط ربما فقط على Windo):
int rowHeight = ui.tableView_Available->rowHeight(0) *1/2;
for (unsigned int i = 0; i < model->rowCount(); i++)
ui.tableView_Available->verticalHeader()->resizeSection(i, rowHeight);
يبدو أن هناك خطأ في QT عند استدعاء ResizerOwStocontents على عرض الجدول لجدول فارغ مع رأس رأسي مخفي ، فإنه لا يغير بدقة الصفوف. وبالنظر إلى أن الجداول غالباً ما تبدأ فارغة ، فهذه مشكلة مزعجة بالفعل. لحسن الحظ ، وجدت حلًا على خيط qtcentre, ، كالآتي:
إذا كان الجدول/النموذج ليس فارغة ، استخدم:
tableView->resizeRowsToContents();
const int rowHeight = tableView->verticalHeader()->sectionSize(0);
tableView->verticalHeader()->setDefaultSectionSize(rowHeight);
خلاف ذلك ، إليك حل بديل:
// workaround for Qt empty table auto-row-sizing problem
const int rowHeight = tableView->verticalHeader()->minimumSectionSize();
tableView->verticalHeader()->setDefaultSectionSize(rowHeight);
QTimer::singleShot(1, ui->tableView, SLOT(resizeRowsToContents()));