crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Переход на другую форму., А также мелкие дурацкие вопросы
alexeyfenix
  опции профиля:
сообщение 9.3.2012, 12:44
Сообщение #1


Новичок


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

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




Репутация:   0  


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

Я хочу сделать банальный переход с одной формы на другую(с widget на labrab). Проблема в том, что я не могу понять, почему у меня открывает форму с названием Programm, когда в коде ясно написано и объявлено другое имя - labrab :huh:
Помогите решить эту мелкую проблему пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 9.3.2012, 16:30
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

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




Репутация:   3  


.pro это файл проекта, а вовсе не форма. Почитать можно здесь: http://qt-project.org/doc/qt-4.8/qmake-project-files.html.
Теперь по поводу имени: labrab - это имя переменной, то как вы обзываете объект класса, не может влиять на значения переменных этого класса. А имя формы это всего лишь переменная типа QString. http://qt-project.org/doc/qt-4.8/qwidget.h...indowTitle-prop. "If no caption has been set, the title is based of the windowFilePath." Это значит что если вы не меняли имя специально, то по умолчанию будет использоваться windowFilePath. Что это такое можно узнать пройдя по ссылке в документации (http://qt-project.org/doc/qt-4.8/qwidget.h...owFilePath-prop).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
alexeyfenix
  опции профиля:
сообщение 9.3.2012, 16:43
Сообщение #3


Новичок


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

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




Репутация:   0  


Спасибо,что ответили! Имя второй формы я поменял на labrab тоже. Я ценю,что Вы меня направляете к первоисточникам, правда ответа,при уровне знания моего английского, они не дают.
Меня больше всего раздражает что всеобщий FAQ в интернете и в книгах очень мягко и аккуратно описывает методы программирования на уровне среднего,а такие тупые вопросы как "что бы перейти на другую форму,надо: или: что бы сделать это: надо". Когда я изучал С++.было гораздо проще. Даже в Делфи интуитивно понятно как это делать было,а в Qt этого не получается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 9.3.2012, 17:18
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

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




Репутация:   3  


alexeyfenix Есть неплохая книга "QT4. Программирование GUI на С++" авторы Жасмин Бланшет и Марк Саммерфилд. В ней все объясняется с самого начала пошагово и довольно подробно. Насчет документации, на этом сайте есть частично переведенная, но конечно лучше юзать английский вариант, со словарем или Google translate, но хоть как то. Тем более что документация написана довольно простым языком (ну во всяком случае те разделы с которыми я сталкивался). Еще можно задавать вопросы на форумах, иногда на них даже отвечают :) .
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
alexeyfenix
  опции профиля:
сообщение 9.3.2012, 17:33
Сообщение #5


Новичок


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

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




Репутация:   0  


Цитата(ilyabvt @ 9.3.2012, 17:18) *
alexeyfenix Есть неплохая книга "QT4. Программирование GUI на С++" авторы Жасмин Бланшет и Марк Саммерфилд. В ней все объясняется с самого начала пошагово и довольно подробно. Насчет документации, на этом сайте есть частично переведенная, но конечно лучше юзать английский вариант, со словарем или Google translate, но хоть как то. Тем более что документация написана довольно простым языком (ну во всяком случае те разделы с которыми я сталкивался). Еще можно задавать вопросы на форумах, иногда на них даже отвечают :) .

Знаю сию книгу. Для таких новичков,как я - отвратительная книга,иначе бы я сюда не писал. Макс Шлее гораздо лучше, НО также в нем нет этого простейшего перехода на другую форму, от которой избегаете сейчас и Вы, посылая меня на всяческие форумы и документации:) Рассматриваются коды среднего и сложного уровня , они подробно разбираются,а дурацкого перехода нет! И видимо его никто не скажет, потому что в золотом и удобном Qt все делается как-то через одно место,не нативно <_<
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.3.2012, 18:19
Сообщение #6


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

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

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




Репутация:   94  


нажал на кнопку - открылось новое окно. Это очень популярная штука, ищи по форуму.
И вот ещё хорошее учебное пособие, в нём есть такая функциональность
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
alexeyfenix
  опции профиля:
сообщение 9.3.2012, 18:34
Сообщение #7


Новичок


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

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




Репутация:   0  


Спасибо за ответ! По форуму проследил страниц 20,ничего похожего нет.
ИЗ примера вообще не понимаю, где там присутсвует 2е окно.да и стоит ли идти в горуП.С. Я об этом и говорю что "нажал на кнопку,открылась новая форма" - в простом варианте нет. Уже 6й пост,а толкового решения нет,при всем желании помочь. должно быть Сложнов в простом,а не наоборот. У Qt как раз наоборот... Что б понять как открыть одну *****ю форму,нужно перерыть тонну документации и примеров,косвенно относящиеся к этой микрофункции.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.3.2012, 8:48
Сообщение #8


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

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

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




Репутация:   94  


Изучай учебные пособия, там всё просто, нянчится с тобой никто не будет.

П.С.
заодно научись мысли формулировать и писать без ошибок, в противном случае декодировать твои сообщения пользователям вообще станет лень.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
alexeyfenix
  опции профиля:
сообщение 10.3.2012, 13:11
Сообщение #9


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.3.2012, 8:48) *
Изучай учебные пособия, там всё просто, нянчится с тобой никто не будет.

П.С.
заодно научись мысли формулировать и писать без ошибок, в противном случае декодировать твои сообщения пользователям вообще станет лень.

Понятно. Никто не в состоянии этого написать доходчиво и понятным языком.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Steklova Olga
  опции профиля:
сообщение 11.3.2012, 11:22
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

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




Репутация:   4  


Привет, alexeyfenix :)
1) Посмотрите следующий код:
test_fenix.pro
QT       += core gui

TARGET = test_fenix
TEMPLATE = app

SOURCES += main.cpp\
        mainwidget.cpp \
        widget1.cpp

HEADERS  += mainwidget.h \
            widget1.h

main.cpp
#include <QtGui/QApplication>
#include "mainwidget.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWidget mainWidget;
    mainWidget.show();

    return app.exec();
}

mainwidget.h
#include <QtGui/QWidget>

class QPushButton;

#include "widget1.h"

class MainWidget : public QWidget
{
    Q_OBJECT

public:
    MainWidget(QWidget *parent = 0);
    ~MainWidget();
private:
    Widget1* widget1;
    QPushButton *button1;
private slots:
    void slotShowWidget1();
};

#endif // MAINWIDGET_H

mainwidget.cpp
#include "mainwidget.h"

#include <QtGui/QPushButton>

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("this is mainWidget");
    this->setGeometry(50, 50, 300, 50);

    widget1 = new Widget1;

    button1 = new QPushButton("Button1", this);
    connect(button1, SIGNAL(clicked()), this, SLOT(slotShowWidget1()));
}

MainWidget::~MainWidget()
{

}

void MainWidget::slotShowWidget1()
{
    widget1->show();
}

widget1.h
#ifndef WIDGET1_H
#define WIDGET1_H

#include <QWidget>

class Widget1 : public QWidget
{
    Q_OBJECT
public:
    Widget1(QWidget *parent = 0);
};

#endif // WIDGET1_H

widget1.cpp
#include "widget1.h"

Widget1::Widget1(QWidget *parent) :
    QWidget(parent)
{
    this->setWindowTitle("this is widget1");
    this->setGeometry(150, 150, 300, 50);
}

2) Посмотрите пример, который посоветовал Litkevich Yuriy.
Откройте в нем part7.pro.
В addressbook.cpp в конструкторе есть
    dialog = new FindDialog;
    connect(findButton, SIGNAL(clicked()), this, SLOT(findContact()));
В AddressBook::findContact() есть
    dialog->show();
А кнопка findButton становится доступной после добавления трех записей.

3) Предлагаю создавать проекты без форм ui.
Не все вещи можно сделать в дизайнере, проще сделать их ручками.
4) Раньше тоже работала с Delphi.
5) Не путайте форму в Delphi и форму в Qt.
В Delphi при добавлении новой формы к проекту создаются два файла: dfm и pas,
а в Qt при добавлении к проекту нового файла "Qt" "Форма Qt Designer" создается один файл: ui.
А вот при добавлении к проекту нового файла "Qt" "Класс формы Qt Designer" создаются три файла: ui, h и cpp.
А вы что наделали? Создали форму. Сохранили файл с именем labrab.ui. При нажатии на кнопку создали к тому же еще и виджет, который зачем-то тоже назвали labrab, отобразили его. Но этот виджет-то никакого отношения не имеет к созданной вами форме.
6) Если создавать виджеты, как это вы делаете, то они будут открываться как окна, имеющие в заголовке имя проекта. Что написали, то и получили.
Разбирайтесь. Успехов!

Сообщение отредактировал Steklova Olga - 11.3.2012, 12:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.12.2024, 4:54