Я использовал 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()));
}