Qt4 QListView宽度
我正在编写一个文件管理器,并通过Qt4 QListView宽度,qt4,qlistview,Qt4,Qlistview,我正在编写一个文件管理器,并通过QListView显示图标。我希望能够根据QListView大小更改网格大小,就像Dolphin中一样。(在“更改窗口大小”中,更改网格大小)。我尝试过获取QListView::size(),QListView::sizeHint(),QListView::minimumSizeHint()等等,但每次都会得到像QSize(256,192)这样的固定值 那么,有没有合适的方法来获取QListView的宽度呢 编辑:我想将我的问题编辑为:有没有办法从QListVie
QListView
显示图标。我希望能够根据QListView
大小更改网格大小,就像Dolphin中一样。(在“更改窗口大小”中,更改网格大小)。我尝试过获取QListView::size()
,QListView::sizeHint()
,QListView::minimumSizeHint()
等等,但每次都会得到像QSize(256,192)
这样的固定值
那么,有没有合适的方法来获取QListView的宽度呢
编辑:我想将我的问题编辑为:有没有办法从QListView的成员函数内部获取其宽度?我确实试过把尺寸弄得和你一样大
MyListView LV = new MyListView()
qDebug() << LV.size();
MyListView LV=新建MyListView()
qDebug()您是否尝试重新实现QListView的showEvent(QShowEvent*event)或paintEvent(qPaint event*event),并从这些函数中获取小部件的大小
这是另一种方法。
1.创建事件筛选器
class Event_Filter : public QObject
{
Q_OBJECT
public:
explicit Event_Filter(QObject *parent = 0);
signals:
void table_resize();//
protected:
virtual bool eventFilter(QObject *, QEvent *);//
public slots:
};
bool Event_Filter::eventFilter(QObject *pObject, QEvent *pEvent)
{
if (!pObject)
return false;
if(pEvent -> type() == QEvent::Resize)
{
emit table_resize();
return true;
}
return false;
}
主窗口代码
table_filter = new Event_Filter();
connect(table_filter,SIGNAL(table_resize()),this,SLOT(slot_table_resize()));
installEventFilter(table_filter);
时隙代码
void MainWindow::slot_table_resize()
{
//resizing table headers
if ((items_table_w != ui -> itemsTable -> viewport() -> width()) || (ui -> itemsTable -> columnWidth(DEVTABLE_COLUMN_DEVICE) <= 0))
......
}
void主窗口::slot\u table\u resize()
{
//调整表标题的大小
如果((items_table_w!=ui->itemsTable->viewport()->width())| |(ui->itemsTable->columnWidth(DEVTABLE_COLUMN_DEVICE)确实可以。它确实可以工作。即使没有事件过滤器,它也可以。我意识到调用size()时会出现问题
在QListView
的成员函数中,可能还有QQbstractItemView
的其他子类。
void MainWindow::slot_table_resize()
{
//resizing table headers
if ((items_table_w != ui -> itemsTable -> viewport() -> width()) || (ui -> itemsTable -> columnWidth(DEVTABLE_COLUMN_DEVICE) <= 0))
......
}