2014-01-03 2 views
1

Я создал форму. У меня много кнопок. При нажатии на кнопку я хочу вызвать другую пользовательскую форму. Я использую только QtDesigner. Я НЕ использую QtCreator. Используя QtCreator, есть так много примеров того, как я могу это сделать. Но с использованием только QtDesigner 4 примеров нет. Я также попытался создать MainWindow, а затем нажав кнопки. Я хочу вызвать новое всплывающее окно, когда я нажимаю кнопку (которая является настраиваемой формой). Я использую Eclipse CDT как IDE. Я установил плагин Qt, чтобы я мог работать как с C++, так и с Qt. Проблема в том, что я не могу использовать «Форму» для объявления моей пользовательской формы в заголовочном файле основного окна.Вызов формы из кнопки с использованием только QtDesigner

Я прочитал в нескольких сообщениях, что это невозможно сделать, используя только QtDesigner, а также прочитать его можно с помощью QObject :: connect. Пожалуйста, кто-нибудь может помочь мне подтвердить, можем ли мы это сделать, и если да, пожалуйста, можете ли вы привести мне пример?

+0

Ответ Дмитрия Маркина должен помочь. Кроме того, я хотел бы упомянуть, что вам не нужен qt-создатель или плагин qt от ecplise, чтобы разработать QT-код, потому что QT, после moc, стандартный C++. Тем не менее, он помогает использовать создатель qt, и я рекомендую его использовать в качестве IDE для qt и для (простой) разработки на C++. – TWE

+0

@TWE: Боюсь, вам не хватает точки вместе с Дмитрием. OP является лучшим и наиболее использующим QtDesigner! – lpapp

ответ

0

Да, это возможно с помощью C++. Вам нужно clicked() сигнала connect() КНОПКИ с прорезью в первой форме:

connect(pushButton, SIGNAL(clicked()), this, SLOT(show2ndForm())); 

Хорошее место, чтобы соединиться в первом конструкторе формы.

В этом слоте просто показать свою вторую форму (например, с помощью QDialog::exec()):

void FirstForm::show2ndForm() 
{ 
    static SecondForm *form = 0; 
    if(!form) 
     form = new SecondForm(this); 
    form->exec(); 
} 

Вы, вероятно, нужно унаследовать вторую форму из QDialog использовать этот метод, а также создать заголовок и исходные файлы для вашей второй формы.

Для немодальной формы вместо модальной используйте form->show() вместо exec().

+0

ОП задавал вопрос о QtDesigner для подключения в отличие от низкоуровневого кода или IDE с редактором вроде QtCreator. – lpapp

0

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

enter image description here

Вы можете выбрать объект-приемник, а затем слот correponding. Я предоставляю еще один снимок экрана, чтобы показать, что это сделано для настраиваемых слотов.

правой кнопкой мыши с помощью мыши в середине главного окна, а сигналы и слоты изменения

enter image description here

Выберите изменение сигналов и слотов опции

enter image description here

Используйте Add для добавления нового слота

enter image description here

Нажмите на кнопку OK, чтобы conirm его, как только вы выбрали нужное имя

enter image description here

В сигнал-слот редактора двойным щелчком на слоте выбранного объекта, и он покажет доступные слоты, включая ваш новый пользовательский слот.

enter image description here

Выберите пользовательский слот, и вы сделали из дизайнерских частей. Не забывайте на самом деле реализовать это в своем коде на C++.

Если вам не нужен пользовательский слот, а встроенного устройства достаточно, вы можете выбрать это без ручек без предыдущих шагов. Они предоставляются для полноты.

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