crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> запуск виджета по нажатию кнопки
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 10:40
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


для описаной изначально задачи, это выглядит так:
Цитата(Litkevich Yuriy @ 13.11.2008, 18:12) *
вобщем логика:
создал виджет 1
создал виджет 2
соеденил сигнал 1-го со слотом 2-го
показал 1-ый
запустил цикл событий приложения
(соображай где все эти действия нужно проделать!)
или в переводе с русского на С++ так:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyWid1 w1;
    MyWid2 w2;

    QObject::connect(&w1,SIGNAL(clicked()),&w2,SLOT(show()));
    w1.show();
    return app.exec();
}
И все

В классе MyWid1 создал сигнал
void clicked();
с седенил его с сигналом кнопки:
QObject::connect(q,SIGNAL(clicked()),this,SIGNAL(clicked()));
где q кнопка (нумеровать ее нет нужды, т.к. в каждом классе она своя)

и того, когда по кнопке первого виджета щелкнут, происходит следующее:
QPushButton::clicked() -> MyWid1::clicked() -> MyWid2::show()
т.е. отобразится второй виджет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
guest13
  опции профиля:
сообщение 14.11.2008, 10:48
Сообщение #12


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 9.10.2008
Пользователь №: 386

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 14.11.2008, 10:40) *
или в переводе с русского на С++ так:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyWid1 w1;
    MyWid2 w2;

    QObject::connect(&w1,SIGNAL(clicked()),&w2,SLOT(show()));
    w1.show();
    return app.exec();
}
И все


когда я делал так, то получал следующее
Object::connect: No such signal MyWid1::clicked()

тогда, я и сделал так, как описал выше....

p.s. пока я писал, ты уже добавил))
Цитата(Litkevich Yuriy @ 14.11.2008, 10:40) *
В классе MyWid1 создал сигнал
void clicked();
с седенил его с сигналом кнопки:

т.е. я просто создал лишний слот) значит всё-таки намудрил ) но зато, теперь кроме вызова второго виджета, я могу ещё какое-нибудь действо совершить)
большое спасибо! :clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 10:57
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(guest13 @ 14.11.2008, 13:48) *
p.s. пока я писал, ты уже добавил))
да что-то инет уменя при тормаживает, пришлось делить на порции.
Обрати внимание, мы соеденили сигнал MyWid1::clicked() со слотом MyWid2::show(), которого вроде нет у нас, но так как MyWid2 является наследником QWidget, он всвою очередь распологает таким слотом, именно этот слот и вызывается.

Ради эксперимента можешь переопределить этот слот, например так:
public slots:
    void show();

реализация:
void MyWid2::show()
{
    QWidget::show();
    QMessageBox::informaion(this, "Slot", tr("MyWid2::show()"));

}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
guest13
  опции профиля:
сообщение 14.11.2008, 11:39
Сообщение #14


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 9.10.2008
Пользователь №: 386

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

ещё маленький вопросик.... с чего такие большие объемы ехе-файлов? когда использовал #include <QtGui> вообще около 2 мб. А когда отдельно все библиотеки подключал <QWidget>, <QApplication> и прочее - размер уменьшился до 780 кб....всё-таки, мне кажется, приложение должно весить значительно меньше....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 12:29
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(guest13 @ 14.11.2008, 14:39) *
с чего такие большие объемы ехе-файлов?
по всей видимости ты собираешь отладочную версию, в pro-файл напиши так:
CONFIG         += debug_and_release build_all


CONFIG (release, debug|release) {
    message(=================== BUILD FOR RELEASE ==================)
    message(EXTLIBPATH = $$EXTLIBPATH)
    message(LIBS = $$LIBS)
    message(Qt's = $$QT)
    message(CONFIG's = $$CONFIG)    
    OBJECTS_DIR = release/obj
    UI_DIR      = release/uic
    MOC_DIR     = release/moc
    RCC_DIR        = release/rcc
}

CONFIG (debug, debug|release) {
            CONFIG        += console
    message(=================== BUILD FOR DEBUG ====================)
    message(EXTLIBPATH = $$EXTLIBPATH)
    message(LIBS = $$LIBS)
    message(Qt's = $$QT)
    message(CONFIG's = $$CONFIG)        
    OBJECTS_DIR = debug/obj
    UI_DIR      = debug/uic
    MOC_DIR     = debug/moc
    RCC_DIR        = debug/rcc    
}

тогда у тебя по команде make будет собиратся и отладочная версия и релизная, при этом результат работы MOC, UIC, RCC и объектники будут акуратно раскладыватся по подкаталогам, а консоль будет создаватся только для отладочной версии.

Незабудь, что после изменения pro-файла надо выполнить qmake
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
guest13
  опции профиля:
сообщение 14.11.2008, 15:20
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 9.10.2008
Пользователь №: 386

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо) теперь до 40 кб упал вес ехе-шника))
тогда ещё нагружу маленьким вопросиком
я полагаю, что это приложение при запуске на компах, где нету установленного Qt Developper не будет запускаться, требуя библиотеки.... как можно сделать, чтобы приложение запускалось на всех компах?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 15:31
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


guest13, вопервых тебе понадобятся dll'ки (для виндовоза) см. Асистент
про Qt Developper никогда не слышал.

если еще используются плагины Qt (например SQL модуль и т.д.) то читай эту статью, когда ты проведьшь тест на возможность распространять свои программы, буду рад если ты чего-нибудь допишешь в эту статью, вобще в ней нужно написать и о распространении программ вообще, а не только о плагинах.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
guest13
  опции профиля:
сообщение 14.11.2008, 15:37
Сообщение #18


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 9.10.2008
Пользователь №: 386

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 14.11.2008, 15:31) *
про Qt Developper никогда не слышал.

эм-м... виноват немного не так выразился
http://qdevelop.org вот эта штука
была на диске от книги Шлее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 15:42
Сообщение #19


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(guest13 @ 14.11.2008, 18:37) *
qdevelop
от него ничего не зависит, только от библиотек Qt
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.12.2024, 6:22