Qt qspliter似乎可以反转索引内容小部件

Qt qspliter似乎可以反转索引内容小部件,qt,qt-designer,splitter,qsplitter,Qt,Qt Designer,Splitter,Qsplitter,当我在QSplitter中放置两个帧时,拆分器似乎给出了帧的反向索引 例如: 我将两个帧(帧A和帧B)放置在垂直拆分器中。首先创建帧B,然后创建帧A。当我不使用QSplitter时,首先检测帧A 如何确保首先创建顶部框架,而不是底部框架 我尝试过的事情 更改帧的名称(按字母顺序)。不起作用 移除框架并按我想要的顺序重新添加它们。不起作用 移除框架并按我想要的相反顺序重新添加它们。不起作用 确实有效的方法是在添加拆分器之前将顶部列表放在底部,反之亦然,这确实有效,但这会使形式颠倒过来 最

当我在QSplitter中放置两个帧时,拆分器似乎给出了帧的反向索引

例如:

我将两个帧(帧A和帧B)放置在垂直拆分器中。首先创建帧B,然后创建帧A。当我不使用QSplitter时,首先检测帧A


如何确保首先创建顶部框架,而不是底部框架

我尝试过的事情

  • 更改帧的名称(按字母顺序)。不起作用
  • 移除框架并按我想要的顺序重新添加它们。不起作用
  • 移除框架并按我想要的相反顺序重新添加它们。不起作用
确实有效的方法是在添加拆分器之前将顶部列表放在底部,反之亦然,这确实有效,但这会使形式颠倒过来

最小可再现示例

Splitter.ui文件


形式
0
0
400
300
形式
45
40
261
166
Qt::垂直
QFrame::StyledPanel
QFrame::提出
QFrame::StyledPanel
QFrame::提出
要查找订单,我使用以下代码

static void dumpWidgetRecursion(QTextStream &str, const QWidget *w, int depth = 0)
{
    if (depth)
        str << QString(depth * 2, QLatin1Char(' '));
    const QRect geom = w->geometry();
    str << '"' << w->metaObject()->className() << "\"/\"" << w->objectName() << "\" "
        << geom
        << (w->isVisible() ? "[visible] " : "[hidden] ");
    if (w->testAttribute(Qt::WA_Mapped))
        str << "[mapped] ";
    str << '\n';
    foreach (QObject *c, w->children()) {
        if (c->isWidgetType())
             dumpWidgetRecursion(str, (const QWidget *)(c), depth + 1);
    }
}

static void dumpAllWidgets()
{
    QString d;
    QTextStream str(&d);
    std::ofstream myfile("dumpallwidgets.txt");

    str << "### QWidgets:\n";
    foreach (const QWidget *w, QApplication::topLevelWidgets())
         dumpWidgetRecursion(str, w);
    myfile << d.toStdString();
}

正如您所看到的,Frame_B位于Frame_A之前,这不是我所期望的结果。

提供A。返回项的顺序不是静态的,因此您的代码不能证明任何东西。拆分器中小部件的顺序应使用验证。这证明帧是按预期顺序排列的:即
帧A
位于索引
0
,这与ui文件中显示的内容相匹配。
"QSplitter"/"splitter" 571x241+140+70[visible] 
          "QFrame"/"frame_B" 571x118+0+123[visible] 
          "QFrame"/"frame_A" 571x118+0+0[visible] 
          "QSplitterHandle"/"qt_splithandle_" 100x30+0+0[hidden] 
          "QSplitterHandle"/"qt_splithandle_" 571x5+0+118[visible]