Russian Qt Forum
Ноябрь 26, 2024, 02:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание нового виджета  (Прочитано 3720 раз)
xitryuga
Гость
« : Август 25, 2014, 01:07 »

День добрый.
Помогите пожалуйста, больше надежды не у кого спросить нубский вопрос)

Как вызвать окно виджета кнопкой из другого виджета

допустим есть main.cpp:
Код:
...
QWidget *wgt = new QWidget;
QWidget *wgt1 = new QWidget;
QPushButton *btn = new QPushButton("make new widget",wgt);
 
wgt->show();
...

надо чтобы при нажатии на btn вылезал виджет wgt1.

свзывал так:
Код:
QObject::connect(btn, SIGNAL(clicked()), &MyClass, SLOT(showNewWidget(wgt1)));

в MyClass showNewWidget описан вот так:
Код:
...
MyClass::showNewWidget(QWidget *widgets_sub)
{
     widgets_sub->show();
}

Хелп! Непонимающий
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 25, 2014, 02:27 »

обсуждалось сто раз на форуме, воспользуйся поиском или почитай книжку/документацию
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
FakeMoNEy
Гость
« Ответ #2 : Август 25, 2014, 03:40 »

Ошибка в QObject::connect(), обрати внимание на параметры сигналов/слотов. В книге Шлее Qt все подробно описано.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Август 25, 2014, 07:23 »

Ну, не всем дано вникнуть в концепцию сигналов и слотов с ходу. Я тоже не был исключением.
Код
C++ (Qt)
#include "mainwindow.h"
#include <QApplication>
#include <QPushButton>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   QPushButton* btn1 = new QPushButton("Button 1"),
              * btn2 = new QPushButton("Button 2");
 
   QObject::connect(btn1, SIGNAL(clicked()), btn2, SLOT(show()));
 
   btn1->show();
   return a.exec();
}
 
P.S.: внутри класса тоже можно делать connect. В этом случае приставку QObject:: можно опустить.
« Последнее редактирование: Август 25, 2014, 07:27 от __Heaven__ » Записан
xitryuga
Гость
« Ответ #4 : Август 25, 2014, 11:04 »

Все понял, получилось.  Тут либо "утро мудреннее вечера", либо я слишком туп)
Записан
8Observer8
Гость
« Ответ #5 : Август 26, 2014, 17:35 »

xitryuga, привет! Специально для вас написал простое демо-приложение: https://github.com/8Observer8/CallDialog

Работает оно так:
- Пользователь нажимает кнопку "Settings". Появляется диалоговое окно "Settings":


- Пользователь нажимаем кнопку "Ok" и данные о настройках выводятся во второе окно:

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.284 секунд. Запросов: 23.