首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QListView宽度

QListView宽度
EN

Stack Overflow用户
提问于 2013-05-20 15:30:56
回答 1查看 367关注 0票数 0

我正在编写一个文件管理器,并通过QListView显示图标。我希望能够改变网格的大小取决于QListView的大小,就像在海豚。(在dolphin中更改窗口大小,更改栅格大小)。我尝试过获取QListView::size()QListView::sizeHint()QListView::minimumSizeHint()等等,但每次都会得到像QSize( 256, 192 )这样的固定值。

那么有没有一种合适的方法来获得QListView的宽度呢?

编辑:我想把我的问题编辑为:有没有办法从QListView的成员函数中获得它的宽度?我确实试过把尺寸弄成

代码语言:javascript
复制
    MyListView LV = new MyListView()
    qDebug() << LV.size();

这给出了确切的大小。但这不是:

代码语言:javascript
复制
    void MyListView::someMemberFunction() {
        ...
        ...
        qDebug() << size();
        ...
        ...
        ...
    }

那么,我应该重新实现一些东西来让它正常工作吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-20 17:03:20

您是否尝试过重新实现QShowEvent的showEvent (QShowEvent* event )或paintEvent ( QPaintEvent * event ),并从这些函数中获取小部件的大小?

这是另一种方法。1.创建事件过滤器

代码语言:javascript
复制
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;
}

  1. 主窗口代码

table_filter =新的Event_Filter();connect(table_filter,SIGNAL(table_resize()),this,SLOT(slot_table_resize();installEventFilter(table_filter);

  • slot代码

void MainWindow::slot_table_resize() {//如果((items_table_w != ui -> itemsTable -> viewport() -> width()) || (ui -> itemsTable -> columnWidth(DEVTABLE_COLUMN_DEVICE) <= 0)) ......}

这对我来说很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16644642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档