Qt4 Qt小部件似乎与其他小部件重叠,而它们不应该重叠';T

Qt4 Qt小部件似乎与其他小部件重叠,而它们不应该重叠';T,qt4,Qt4,我使用setGeometry()移动窗口上的一些按钮和列表并调整其大小。 问题是按钮和列表有一定的顺序,并且奇怪地重叠。我甚至不想让它们重叠,也不明白它们为什么会重叠 由于它们在下面的代码中,我唯一可以单击的就是BtnPlay。另一个按钮甚至在鼠标上方都没有改变。根据我对它们的定位,它们会变得可点击 在某个点上,我首先创建了最右边的小部件,最后在原点创建了小部件。一切都起作用了,这让我相信它们在一个看不见的平原上重叠,但我不明白为什么或如何修复它。 此外,当我在列表附近放置一个按钮(按钮位于列表

我使用setGeometry()移动窗口上的一些按钮和列表并调整其大小。 问题是按钮和列表有一定的顺序,并且奇怪地重叠。我甚至不想让它们重叠,也不明白它们为什么会重叠

由于它们在下面的代码中,我唯一可以单击的就是BtnPlay。另一个按钮甚至在鼠标上方都没有改变。根据我对它们的定位,它们会变得可点击

在某个点上,我首先创建了最右边的小部件,最后在原点创建了小部件。一切都起作用了,这让我相信它们在一个看不见的平原上重叠,但我不明白为什么或如何修复它。 此外,当我在列表附近放置一个按钮(按钮位于列表的左侧)时,由于某种原因,列表不再可以单击。 设置几何允许我设置小部件的左上角坐标、宽度和高度。我不明白他们为什么要互相干涉

 int Gui_Init(int argc, char *argv[])
 {
 QApplication app(argc, argv);
 app.setStyle("plastique");
 QWidget Window;
 Window.resize(800, 600);

 QTrackList = new QListObj(&Window);
 RebuildButton BtnRB(&Window);
 PlayButton BtnPlay(&Window);

 Window.show();
 return app.exec();
 return 0;
 }


 RebuildButton::RebuildButton(QWidget *parent) : QWidget(parent)
 {
 Rebuild = new QPushButton(tr("Rebuild Library"), this);
 Rebuild->setGeometry(400,575,100,25);
 connect(Rebuild, SIGNAL(clicked()), this, SLOT(RebuildLibrary()));
 }


 PlayButton::PlayButton(QWidget *parent) : QWidget(parent)
 {
 PlayBtn = new QPushButton(tr("Play Track"), this);
 PlayBtn->setGeometry(400, 550, 100, 25);
 connect(PlayBtn, SIGNAL(clicked()), this, SLOT(PlayTrack()));
 }
QListObj的构造函数:

 QListObj::QListObj(QWidget *parent) : QWidget(parent)
 {
 List = new QListWidget(parent);
 List->setGeometry(500,0,300,600);
 new QListWidgetItem(tr("fix it"), List);
 connect(List, SIGNAL(itemSelectionChanged()), this, SLOT(SelectTrack()));
 }

您的设计有点不合常规,将
QWidget
子类化以包含按钮,但我怀疑您的问题可能是您正在设置按钮相对于包含
QWidget
子类的几何图形(
RebuildButton
PlayButton
)但不设置
重建按钮
播放按钮
小部件本身的几何图形

当您对工作方式感到更满意时,您可能需要重新设计一点,并尝试将gui与业务逻辑分离。创建
QWidget
的子类作为应用程序窗口(或使用
QMainWindow
),并使用布局管理器组合在该子类构造函数中添加/布局所有gui控件


然后,我建议您将所有按钮信号连接到window类中的私有插槽,并从这些插槽中发出自定义信号,触发业务逻辑在其他位置执行。

您的设计有点非常规,将
QWidget
子类化为包含按钮,但是我怀疑您的问题可能是您正在设置按钮相对于包含
QWidget
子类(
RebuildButton
PlayButton
)的几何图形,而不是设置
RebuildButton
PlayButton
小部件本身的几何图形

当您对工作方式感到更满意时,您可能需要重新设计一点,并尝试将gui与业务逻辑分离。创建
QWidget
的子类作为应用程序窗口(或使用
QMainWindow
),并使用布局管理器组合在该子类构造函数中添加/布局所有gui控件

然后,我建议您将所有按钮信号连接到window类中的私有插槽,并从这些插槽发出定制信号,触发业务逻辑在别处执行