Я искал много форумов для решения этой проблемы, поэтому, пожалуйста, не просто ссылку на форум.QT открыть форму (.ui) из основной формы нажатием кнопки
У меня есть мой main.ui, который загружается с самого начала. это заголовок
using namespace Ui;
class main: public QMainWindow
{
Q_OBJECT
public slots:
void AddPlayer();
public:
main(QWidget *parent = 0);
~main();
private:
Ui::mainClass ui;
Ui::FormPla uiPlayer;//the name of the form i want to open
};
Тогда у меня есть main.cpp
main::main(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.mainBtnPla, SIGNAL(clicked()), SLOT(AddPlayer()));
}
main::~main()
{
}
void FinalYearProject::AddPlayer()
{
//code to open player.ui
//formPla *obj;
//obj = new formPla();
//obj->show(); //i tried this but show wasnt a member of ui::player
}
player.ui оленья кожа имеет .h или .cpp. Я не знаю, влияет ли это на это. Я просто хочу открыть форму.
Я добавил класс 'класса игрока: общественный QWidget { \t Q_OBJECT общественности: \t игрок (QWidget * Родитель = 0); \t ~ игрок(); частный: \t Ui :: formPla ui; }; '' игрока :: (QWidget * Родитель) \t: QWidget (родитель) { \t ui.setupUi (это); \t игрок :: ~ игрок() { // delete ui; \t } ' Форма появляется на короткое время, а затем идет. 'void main :: AddPlayer() { \t \t плеер * obj; \t obj-> show(); \t } ' –
Если игровой объект должен быть дочерним из вашего основного виджета, вы должны добавить его в макет главного виджета. Если он предназначен для отдельного диалога, вам необходимо прикрепить его к «QDialog» и использовать «QDialog :: exec()». Вы также можете напрямую получить игрока из «QDialog», а затем вызвать «obj-> exec()» вместо «obj-> show()» – jpo38