Çok basit olması gereken bir şey yapmaya çalışıyorum, ama daha çok baktığımda bir Qt hatası olup olmadığını merak ediyorum.Gizli bir QTableView Sütunu Gösterme
Yani, kullanıcı istediği gibi/gösterilen gizli olabilir sütunları olan bir QTableView
var. Tabloyu başlattıktan sonra, kullanıcının GUI açık olduğunda son kullanıcının gizlediği sütunları gizleyen (QTableView::hideColumn()
kullanarak) özel bir restoreColumns()
yöntemini çağırıyorum. kullanıcı kullanıcı tarafından GUI koştu son kez gizlenmişti sütunları göstermek çalıştığında
sorun daha sonra gelir. Uygun sinyal/yuva arandığından ve bir sebepten geçiyor ancak bir sebepten dolayı QTableView
sütunu görüntülemek için güncellenmiyor. garip Ne
zaten (kullanıcı tarafından GUI ran son defa gizli değildi) görüntülenir herhangi bir sütun/gizli gösterilen alma ile herhangi bir sorun olmasıdır.
Herhangi bir düşünce? Teşekkürler!/Sütunlardan biri gizlemek Aşağıda
for (int i=0; i<horizontalHeader()->count(); i++) {
// load size to restore previous width
...
horizontalHeader()->resizeSection(i, width); // restore width
// load previous column position
...
// restore column order
int currentVisualIndex = horizontalHeader()->visualIndex(i);
if (currentVisualIndex != visualIndex)
horizontalHeader()->moveSection(currentVisualIndex, visualIndex);
// load previous hidden/shown state
...
if (columnHidden) {
hideColumn(i);
} else {
showColumn(i);
}
}
göstermek için örnek kod: Masayı başlatmak nasıl İşte
yöntem restoreColumns ait
m_tableModel = new mytablemodel();
m_tableView = new mytableview();
m_tableView->setItemDelegate(m_tableDelegate);
m_tableView->setModel(m_tableModel);
Et (...) var . QTableView
ait QHeaderView
Menü ve İçerik Menüsünden ulaşılabilir bir QAction
bağlanır
void mytableview::showAColumn(bool checked) {
// mytableview is a subclass of qtableview
if (checked)
showColumn(COLUMN_A); // COLUMN_A is an enum for the column
else
hideColumn(COLUMN_A);
}
.
connect(action, SIGNAL(toggled(bool)), this, SLOT(showAColumn(bool)));
"showColumn()" ifadesinden sonra bir ['resizeColumnToContents'] (http://doc.qt.nokia.com/latest/qtableview.html#resizeColumnToContents) çağrısı yapmayı deneyebilir misiniz? (Sanırım "saklan" çok erken oluyor, sütun geçersiz bir boyuta sahip olabilir) – Mat
Denedim - değişiklik yok. Tablo görünümü ekrana boyanmadan önce hideColumn'un nasıl geldiği ile ilgili bir şey olduğunu düşünüyorum ... tablo görünümünden sonra çizildikten sonra restoreColumns() yöntemini çağırmayla ilgili nasıl gideceğime gerçekten emin değilim. – Daren
Biraz daha restoreColumns() yöntemine daha fazla ayrıntı ekledim. Sütunu yeniden boyutlandırmakta olduğum şeyler gibi görünüyor. O bölümü açıkladığımda beklediğim gibi çalıştı. Ancak, daha sonra önceki sütun genişliğini geri yükleme yeteneğini kaybettim ... – Daren