c++ - QTreeView 放置在 QDockWidget 中时不显示

标签 c++ qtreeview qdockwidget

我想在 QDockWidget 上使用 QTreeView 显示一个文件系统。树会动态改变,所以我决定使用 QTreeView 而不是 QTreeWidget。

这是我的代码:

QFile file(":/default.txt");
file.open(QIODevice::ReadOnly);
TreeModel model(file.readAll());
file.close();

QTreeView w;
w.setModel(&model);
swatch1->setWidget(&w);
w.setEnabled(true);

addDockWidget(leftarea, swatch1);

swatch1 是 QDockWidget 类型。上面的代码位于(继承自)MainWindow 类型的函数体内。代码运行流畅,树没有出现。

我还尝试了另一种方法:将 QTreeView 放入 QVBoxLayout(使用 setWidget 方法),然后将其放入 QDockWidget(使用 setLayout 方法)。第二段代码也运行顺利,树没有出现。

此代码是从 Qt Creator IDE 上的一个工作示例复制而来的,我对其进行了测试。唯一的区别是,在原始的 QTreeView 示例中,上面的代码放在 main() { ..... } 函数中。

有没有人有一个工作示例,将 QTreeView 放入 QDockWidget 并工作(代码实际上显示了树)?提前致谢。

最佳答案

我不太确定 OP 中出了什么问题。但是,我做了一个最小的完整示例,看看是否有陷阱:

// standard C++ header:
#include <iostream>
#include <string>

// Qt header:
#include <QApplication>
#include <QDockWidget>
#include <QFileSystemModel>
#include <QMainWindow>
#include <QTreeView>

using namespace std;

int main(int argc, char **argv)
{
  cout << QT_VERSION_STR << endl;
  // main application
#undef qApp // undef macro qApp out of the way
  QApplication qApp(argc, argv);
  // setup GUI
  QMainWindow qWin;
  QDockWidget qDock;
  qDock.setAllowedAreas(Qt::AllDockWidgetAreas);
  QTreeView qTreeView;
  QFileSystemModel qFSModel;
  qTreeView.setModel(&qFSModel);
  QString path = QDir::currentPath();
  QModelIndex indexPath = qFSModel.index(path);
  qTreeView.scrollTo(indexPath);
  qDock.setWidget(&qTreeView);
  qWin.addDockWidget(Qt::TopDockWidgetArea, &qDock);
  qWin.show();
  // run application
  return qApp.exec();
}

在 Windows 10(64 位)上使用 VS2013、Qt 5.6 编译和测试:

Snapshot of testQDockTreeView

如快照中所示,QTreeView 是可见的(停靠和未停靠)。我检查过两者都对鼠标点击有反应 - 它们确实有反应。

(我想这是我写过的最精简的 Qt 应用程序之一。)

关于c++ - QTreeView 放置在 QDockWidget 中时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42697731/

相关文章:

c++ - 如何选择 QTreeView 中的上一行?

c++ - 如何准确知道用户何时展开 QTreeView 项目?

python - 获取当前选中的 QTreeView 项的文本和索引

qt - 如何制作透明的QT Dock Widget

c++ - 使用数组作为数组元素时出错

c++ - Arduino 打印在大量打印时失败

c++ - 如何从 C/C++ 中的给定 URL 获取视频链接

python-3.x - 如何在pyqt中显示RGB图像

java - 如何在字节数组 Java 中表示 header 值和实际消息?