Версия для печати темы
Форум на CrossPlatform.RU _ Qt инструментарий _ QT 4.5.2 / Qt Creator 1.2.1 обработка событий , зависимость форм .
Автор: Gman 29.9.2009, 9:38
Создал новое Gui приложение приложение и форму mainwindow.ui все по дефолту креэйтором , создал на форме mainwindow.ui с помощью дизайнера кнопки , поля ввода и другие виджеты , как сделать так что бы при нажатие на кнопки и т.д производильсь определенные действия например как в Delphi ????
И как делать зависимость форм ?
Если не трудно напишите или перевидите документацию по QT Creator ,информации на русском почти нет для этой IDE =\ , можно даже статьи с картинками как что делать можно . QDevelop вобще темный лес .
Автор: nZil 29.9.2009, 14:13
вот http://www.youtube.com/view_play_list?p=22E601663DAF3A14 туториалы по QtCreator'у.
Наверное все книги по Qt на русском содержат небольшое описание QtCreator'а.
ой ошибочка... в книгах описание Designer'а. Вообще процесс создания форм и обработки базовых сигналов у криэйтора и дизайнера одинаковый. Так что юзай книги)
Автор: Gman 30.9.2009, 23:06
Я разобрался вот ролик как делать обработку событий : http://www.youtube.com/watch?v=c0HkTtUNxrw , Народ Напишите по этому делу мини хэлп плиз !!!!! , не всем же понятно , все подробней опишите в плане написания кода
Автор: Litkevich Yuriy 1.10.2009, 6:02
Цитата(Gman @ 1.10.2009, 3:06)
Народ Напишите по этому делу мини хэлп плиз !!!!! , не всем же понятно , все подробней опишите в плане написания кода
вот возьми и напиши. У нас для этого и Вики имеется, http://www.wiki.crossplatform.ru/index.php/Справка:Справка.
Автор: Gman 3.10.2009, 19:15
Есть форма dialog с кнопками и текстом (QDialog) , почему его надо каждый раз объевлять ?
и при вызове формы dialog , не отображаются кнопки и текст ?
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSplashScreen>
#include "dialog.h"
#include "ui_dialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
Dialog dialog;
a.connect(&w,SIGNAL(clicked()),&dialog,SLOT(showdialog()));
return a.exec();
}
Описание слота :
int MainWindow::showdialog()
{
Dialog dialog;
dialog.exec();
return 0;
}
Автор: Litkevich Yuriy 3.10.2009, 20:00
Цитата(Gman @ 3.10.2009, 23:15)
почему его надо каждый раз объевлять ?
не понятно очём речь, а приведённый код ещё большую непонятность создаёт.
Автор: Gman 3.10.2009, 20:27
Есть два окна главное и диалоговое , диалоговое вызывается из главного путем сигнала click , но не отображаться правильно как в должно быть в дизайнере . Вопрос про объединении форм .
Автор: Litkevich Yuriy 3.10.2009, 22:56
Цитата(Gman @ 3.10.2009, 23:15)
почему его надо каждый раз объевлять ?
Цитата(Gman @ 4.10.2009, 0:27)
диалоговое вызывается из главного
Диалоговые окна, модальные, создаются именно так, как у тебя написано в слоте
int MainWindow::showdialog()В функции main он бессмысленен, упоминание его (include) тоже не нужно. Соответственно и соединение в ней тоже не нужно.
В классе
MainWindow сигнала
clicked наверняка нет.
Диалог должен быть известен главному окну, т.е. в нём должен быть соответствующий
include.
Тебе необходимо соеденить сигнал какого либо объекта (находящегося в главном окне) со слотом
int MainWindow::showdialog(). И сделать это нужно в конструкторе главного окна (самое подходящее место)
Цитата(Gman @ 29.9.2009, 13:38)
QDevelop вобще темный лес .
он, кстати, проще чем креатор.
Автор: Gman 10.10.2009, 0:40
Как создать окно без рамки и как реализовать метод exec для MainWindow , что бы окно MainWindow не исчезало ?
Автор: Andrewshkovskii 10.10.2009, 0:55
Без рамки : QMainWindow ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) , указать WindowFlags как Qt::FramelessWindowHint . Что значит что бы не исчезало?
Автор: Gman 10.10.2009, 1:17
void Frame::showMainWindow()
{
MainWindow h;
h.show();
}
Только нажатие на кнопку т.е сигнала clicked будет показано гавное , MainWindow , на то что бы главное окно оставалось открытым после нажатия на кнопку , а не закрывалось .
Автор: Andrewshkovskii 10.10.2009, 1:31
Не понятно все равно. спрятать окно что ли?
Автор: Litkevich Yuriy 10.10.2009, 6:59
Цитата(Gman @ 10.10.2009, 5:17)
MainWindow h;
h.show();
Переменная MainWindow локальная для этой функции, как только из функции выйдешь она прекратит своё существование. (Это из области языка "Си", ещё до плюсов)
Автор: Gman 10.10.2009, 12:37
MainWindow это класс , h - объект класса MainWindow , show() метод , а указатель на объект h создать не возможно , и как соединить с mai.cpp хз =\
Автор: Litkevich Yuriy 10.10.2009, 12:54
Цитата(Gman @ 10.10.2009, 16:37)
а указатель на объект h создать не возможно
поясни
Автор: Andrewshkovskii 10.10.2009, 13:27
создать указатель на h:
MainWindow *ph = &h;
Что значит соединить с main.cpp? Мне кажется, у тебя проблемы с языком (программирования) в плане теории.
Автор: Gman 10.10.2009, 15:05
Мне нужно функции showMainWindow передать значение h; метод showMainWindow это медот класса Frame . Наоборот в простом С++ это проще сделать . Меня , что то не доходит как объекты одного класса передавать другому , что бы был один и тот же объект .
void Frame::showMainWindow(void)
{
void show();
}
Как в эту функции передать h (из MAinWIndow h; т.е объект h класса MainWindow ) ? В С++ я бы создал конструктор с параметрами и эти параметры передал бы методу show , если наследовать один класс от другого получиться ересть ,
Автор: Litkevich Yuriy 10.10.2009, 15:11
Цитата(Gman @ 10.10.2009, 19:05)
В С++ я бы создал конструктор с параметрами и эти параметры передал бы методу show , если наследовать один класс от другого получиться ересть ,
Qt написана C++.
Лучше расскажи основной замысел программы. А то ты как-то непонятно делаешь.
Изначально ты пытался использоватьQDialog и делал это неверно.
Потом окно без рамки
Тепрь какой-то Frame лишь водной функции которого ты создаёшь главное окно приложения и убиваешь его по выходу из функции.
По моему разумению это три раные темы, и ни как не связанны с заголовком "Qt Creator 1.2.1 обработка событий"
Автор: Andrewshkovskii 10.10.2009, 15:25
Тебе надо передать указатель на объект в функцию (ну или его копию..) :
void Frame::showMainWindow(MainWindow * h)
{
h->show();
}
Автор: Gman 10.10.2009, 15:27
Связано , я создаю кнопку или другой элемент управления , прикрепляю к нему сигнал , описываю слот , проблема идет в описании слота . Мне нужно окон с кнопкой запуска окна MainWindow и всё , и разобраться с передаче
Автор: Andrewshkovskii 10.10.2009, 15:42
Ты лучше свои вопросы нормально формулируй, а то тебя понять сложно.Тебе удалось передать свой объект в слот?
Автор: Litkevich Yuriy 10.10.2009, 17:14
Вот тестовый пример
tst.zip ( 3 килобайт )
: 179
Автор: Gman 10.10.2009, 17:15
Мне нужна форма без рамки т.е форма заставка с кнопкой запуск которая будет запускать MainWindow т.е главное окно , объект в слот не передается , приходиться загонов в описании слота объявлять объект класса MainWindow ,или других классов , для QDialog есть такой метод exec() , в аттач прикрепил свой проект , вопрос идиотский но решения нет у меня =\ спс за помощь.
Автор: Litkevich Yuriy 10.10.2009, 17:29
Цитата(Gman @ 10.10.2009, 21:15)
Мне нужна форма без рамки
Пёс сней с рамкой, ты с начала с базовыми вещами разберись, потом марафет наводить будешь.
поправил твой проект, помоему работает как и планировалось.
Proga.zip ( 5.32 килобайт )
: 185П.С. смотри коментарии
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)