2015-12-03 4 views
0

Я искал много форумов для решения этой проблемы, поэтому, пожалуйста, не просто ссылку на форум.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. Я не знаю, влияет ли это на это. Я просто хочу открыть форму.

ответ

0

классы, сгенерированные с помощью ui, не могут использоваться без класса QWidget, загружая их.

Необходимо создать отдельный базовый класс (Player) QWidget, загрузить Ui::FormPla, а затем создать экземпляр этого класса, чтобы показать Ui::FormPla на экране.

+0

Я добавил класс 'класса игрока: общественный 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 } ' –

+0

Если игровой объект должен быть дочерним из вашего основного виджета, вы должны добавить его в макет главного виджета. Если он предназначен для отдельного диалога, вам необходимо прикрепить его к «QDialog» и использовать «QDialog :: exec()». Вы также можете напрямую получить игрока из «QDialog», а затем вызвать «obj-> exec()» вместо «obj-> show()» – jpo38

Смежные вопросы