2014-01-22 4 views
0

У меня есть проект, который предоставляет пользователю GUI через Qt. Я разработал его с помощью Qt Designer (интегрированный в Qt Creator), и теперь я хотел бы добавить еще одно окно, чтобы пользователь мог изменить настройки.
Afaik Мне нужно использовать QWidget, чтобы создать другое окно, и теперь мне интересно, как я могу отредактировать это QWidget в Qt Designer, потому что я могу проектировать mainwindow.
Мой код выглядит следующим образом:
Qt Designer: Редактировать другое окно, чем mainwindow

mainwindow.hpp

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 

// various slot calls  

// action triggered when clicking an entry in the QMenu of mainwindow 
void on_action_dummy(); 

private: 
    Ui::MainWindow *ui; 
    QWidget dummy; 
}; 

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

// various implementations of the slot calls in mainwindow.hpp 

void MainWindow::on_action_dummy() 
{ 
    dummy.show(); 
} 

Может быть, мне нужен собственный класс для моего нового окна? Является ли QWindow правильным классом для выполнения этой задачи?

ответ

1

Вам необходимо добавить новый пользовательский интерфейс, а также заголовок/класс. Для этого в диалоговом окне «Новый файл» в Qt Creator (класс формы Qt Designer под подкатегорией «Qt» на боковой панели) есть опция. Затем вы открываете это и создаете экземпляр класса, такого как MainWindow, в точке входа вашей программы (int main()). Что-то вроде:

MySettingsDialog *dialog = new MySettingsDialog(this); 
dialog->show(); 

Вы должны быть осторожны, как вы его экземпляр - в основном убедившись, что объект будет выжить, когда он выходит из текущей области (например, с помощью указателя, если вы звоните в этом методе внутри вашего класса). Кроме того, как вы показываете/вы можете изменить свой диалог. Обычно это происходит, когда требуется вместо блокировки (модальное) диалоговое окно вместо нового «окна».

Edit: Для того, чтобы справиться с управлением памятью, вы можете установить WA_DeleteOnClose атрибут:

dialog->setAttribute(Qt::WA_DeleteOnClose); 
Смежные вопросы