无法在放置在另一个 QWidget 中的 QWidget 中显示树 (QTreeView)
Cannot display a tree (QTreeView) inside a QWidget placed inside another QWidget
我对包含树的QWidget(QTreeView)有问题:如果它是单独创建为小部件,我可以显示它,如果它是另一个更高级别小部件的子小部件,我不能做同样的事情。在第二种情况下,我得到的是一个没有树的空小部件。
这有效:
QApplication testApp(argc, argv);
MyTree myTree;
testApp.exec();
这不起作用:
class MainWindow : public QMainWindow
{
Q_OBJECT
QSplitter *spl1, *spl2;
QMdiArea *mdiArea;
QTableWidget *other;
public:
MainWindow();
void LoadTree();
MyTree *myTree;
};
MainWindow::MainWindow(QWidget *_parent)
: QMainWindow(_parent), myTree(0)
{
mdiArea = new QMdiArea;
other = new QTableWidget;
spl1 = new QSplitter(Qt::Vertical, this);
spl1->addWidget(mdiArea);
spl1->addWidget(other);
LoadTree();
spl2 = new QSplitter(Qt::Horizontal, this);
spl2->addWidget(myTree);
spl2->addWidget(spl1);
setCentralWidget(spl2);
}
void MainWindow::LoadTree()
{
myTree = new MyTree(this);
}
以下是两种情况共有的代码(应该没问题):
class MyTree : public QWidget
{
Q_OBJECT
public:
explicit MyTree(QWidget *_parent = 0);
int RefreshTree();
private slots:
void HandleTreeWidgetEvent(QModelIndex);
private:
QWidget *parent;
QTreeView *pjrTree;
QTreeView *GetNewTree();
};
MyTree::MyTree(QWidget *_parent) :
QWidget(_parent),
parent(_parent)
{
pjrTree = GetNewTree();
if(pjrTree) {
if(parent == 0)
pjrTree->show();
}
else {
// Never gets here
}
}
QTreeView* MyTree::GetNewTree()
{
QFileSystemModel *model = new QFileSystemModel;
model->setReadOnly(true);
model->setRootPath("/my/path/");
QTreeView* pjrTree = new QTreeView;
pjrTree->setModel(model);
pjrTree->setRootIndex(model->index("/my/path/"));
QModelIndex index;
index = model->index(4, 1); // temp values - no effect
return pjrTree;
}
树视图是唯一不显示的小部件吗?我建议在实例化树时,将它作为父窗口而不是主窗口包含在其中的拆分器传递。
从 QTreeView
派生类 MyTree ,而不是将指向 QTreeView
的指针作为成员变量,解决了我的问题。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 如何突出显示特定的“QWidget”
- QTabWidget 或 QTabBar 使用 C++ 在不同的选项卡中显示相同的 QWidget
- 无法在放置在另一个 QWidget 中的 QWidget 中显示树 (QTreeView)
- 在Qt5的QWidget中显示Qt3D内容
- 在 QWidget 传递给另一个类后,将 QWidget 传递给 QPushButton(按钮不显示)
- 无法在 Qwidget 中显示 OpenGL
- 为什么一个懒惰加载的QWidget会显示,而一个存储的却不会
- 显示事件后的Qt4 qwidget
- 在QGraphicsScene上显示来自设备驱动程序的QWidget与本地窗口句柄(HWND)
- 如何在qwidget显示()之前调用函数?
- 当我调用QWidget::winId()时,QtWebEngine显示黑色块
- 如何显示QWidget以上数据流从外部库处理的设备