我使用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()));
}
答案 0 :(得分:1)
您的设计有点不合常规,将QWidget
子类化为包含按钮,但我怀疑您的问题可能是您正在为按钮设置相对于包含QWidget
子类的几何({{ 1}}和RebuildButton
)但不设置PlayButton
和RebuildButton
小部件本身的几何图形。
当您对事物的运作方式感到更加自在时,您可能需要重新设计一下,并尝试将您的gui与业务逻辑分开。创建一个PlayButton
的子类作为您的应用程序窗口(或使用QWidget
)并使用布局管理器的组合来添加/布局该子类构造函数中的所有gui控件。
然后我会建议您将所有按钮信号连接到窗口类中的私有插槽,并从这些插槽中发出自定义信号,触发业务逻辑在其他地方执行。