在MainWindow中显示两个小部件

时间:2013-01-07 21:41:54

标签: qt

我是Qt的新手。就目前而言,我有一个带有按钮btn的桌子。单击该按钮时,setCentralWidget(view)将占据窗口,因此我无法再看到该表。但是,如果我删除setCentralWidget(view),则单击按钮时不会显示任何内容。

有没有办法可以在同一个窗口中显示?拆分或停靠可能吗?

(我删除了与我的问题无关的代码)

MainWindow::MainWindow()
{
    //etc

    packet = new QTabWidget;
    setCentralWidget(packet)
}

//other code

void MainWindow::create(const QString &a)
{
      QTableWidget* table = new QTableWidget;
      int tabIndex = packet->addTab(table, a);
      packet->setCurrentIndex(tabIndex);

      table->setRowCount(1);
      table->setColumnCount(2);

      table->setHorizontalHeaderLabels(QString("a;Simulator").split(";"));"));

      table->setItem(0,0,new QTableWidgetItem(a));

      QPushButton *btn = new QPushButton("load", this);
      connect(btn, SIGNAL(clicked()), this, SLOT(sim()));
      table->setCellWidget(0,1, btn);
}

void MainWindow::sim()
{
    QGraphicsScene* scene = new QGraphicsScene(QRect(-10, -10, 100, 50));
    QGraphicsView* view = new QGraphicsView();
    scene->addText("Network");
    view->setScene(scene);
    view->setGeometry(QRect(10, 10, 100, 50));

    setCentralWidget(view);
}

2 个答案:

答案 0 :(得分:0)

你应该看看QMdiArea类 - 它被设计用作主窗口的中央窗口小部件,它可以有许多内部窗口小部件。它也有各种各样的布局样式 - 在该页面上向下滚动以查看示例。

希望有所帮助!

答案 1 :(得分:0)

你应该继承QWidget。例如,创建自己的MyWidget类。此类将在分割器中包含QGraphicsView和QTabWidget。在您的MainWindow中,将中央窗口小部件设置为MyWidget的实例。