crossplatform.ru

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

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


Новичок


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

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




Репутация:   0  


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

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


Участник
**

Группа: Участник
Сообщений: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




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