1

考虑以下 QAbstractItemModel 子类:

class MyItemModel : public QAbstractItemModel {
Q_OBJECT
public:
    (...)
    virtual int rowCount(const QModelIndex& parentIdx = QModelIndex()) const override;
    (...)
};

还有一个用于显示 QTreeView 的简单 QDockWidget

class DockWidget : public QDockWidget {
Q_OBJECT
public:
    DockWidget() {
         view = new QTreeView();
         setWidget(view);
    }
private:
    QTreeView *view;
}

如果我在 Windows MyItemModel::rowCount()上调用 DockWidget 构造函数,则会被调用。如果我在 Linux 上使用此代码,则不会调用MyItemModel::rowCount() 。这个对吗?

我怀疑 Qt for Windows 在调用QDockWidget::setWidget( ) 时会触发 rowCount() ,这在 Linux 上是不必要的。但这只是一个猜测。

Qt 版本 4.8.3,
Windows 7 64 位,
Ubuntu 32 和64 位

4

0 回答 0