0

我是 QT 的新手,现在正试图在 QList 下方放置一个表格,但 Qlist 和表格显示为两个单独的窗口。我需要或多或少像 iTunes 一样的输出,顶部是 Qlist,底部是 Qtable。

任何帮助表示赞赏。以下是所有文件的代码。谢谢

//main.cpp
#include "listwidget.h"
#include "table.h"
#include <QApplication>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);  

  ListWidget window;
  Table window2;    


  window.move(300, 300);
  window.setWindowTitle("Qtunes");
  window.show();

//  window2.move(300, 300);
 /// window2.setWindowTitle("Qtunes");
  window2.show();   

  return app.exec();
}


//Listwidget.cpp
#include "listwidget.h"
#include <QHBoxLayout>
#include <QInputDialog>


ListWidget::ListWidget(QWidget *parent)
    : QWidget(parent)
{

  QHBoxLayout *hbox = new QHBoxLayout(this);

  lw = new QListWidget(this);
  lw2 = new QListWidget(this);  
  lw3 = new QListWidget(this); 

  hbox->addWidget(lw);

  hbox->addWidget(lw2);

  hbox->addWidget(lw3);


  setLayout(hbox);
}







//listwidget.h
#ifndef LISTWIDGET_H
#define LISTWIDGET_H

#include <QWidget>
#include <QListWidget>

class ListWidget : public QWidget
{
  Q_OBJECT

  public:
    ListWidget(QWidget *parent = 0);

  private:
    QListWidget *lw;
    QListWidget *lw2;
    QListWidget *lw3;   

};



#endif







//table.h
#ifndef TABLE_H
#define TABLE_H

#include <QWidget>

class Table : public QWidget
{
  public:
    Table(QWidget *parent2 = 0);

};

#endif






//table.cpp
#include "table.h"
#include <QHBoxLayout>
#include <QTableWidget>

Table::Table(QWidget *parent2)
    : QWidget(parent2)
{
  QHBoxLayout *hbox2 = new QHBoxLayout(this);

  QTableWidget *table = new QTableWidget(25, 25, this);

  hbox2->addWidget(table);
  setLayout(hbox2);
}
4

1 回答 1

0

您应该首先创建一个窗口,然后制作该窗口的表格和列表子项。顶层窗口可以是一个简单的 QWidget,如果您需要它提供的额外功能(如菜单、工具栏、状态栏等),则可以是 QMainWindow。如果您使用 QMainWindow,您仍然应该使用另一个小部件,设置将其作为 QMainWindow 的中央小部件 (setCentralWidget()),然后将列表和表格添加到该中央小部件。

为了获得更好的结果,您还可以将它们都放在一个布局中。

要记住的是,没有父窗口的小部件将始终是顶级窗口。

于 2013-02-23T05:38:37.880 回答