Qt窗口小部件似乎与其他窗口小部件重叠时,他们不应该
问题描述:
我使用setGeometry()来移动和调整窗口上的一些按钮和列表。 问题是按钮和列表有一定的顺序,并且奇怪地重叠。我甚至不希望它们重叠,也不明白它们为什么重叠在一起。Qt窗口小部件似乎与其他窗口小部件重叠时,他们不应该
因为他们在下面的代码中,我唯一能点击的就是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
),但不会为RebuildButton
和PlayButton
小部件本身设置几何。
当您对事物的工作方式感觉更舒适时,您可能需要重新设计一下,并尝试将您的GUI与业务逻辑分开。创建QWidget
的子类以充当您的应用程序窗口(或使用QMainWindow
),并使用布局管理器的组合在该子类构造函数中添加/布置所有的gui控件。
然后,我会建议你将所有的按钮信号连接到窗口类中的专用插槽,并从这些插槽发出触发业务逻辑在其他位置执行的自定义信号。