Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [qt] нужно вызвать форму из основной получить от неё число из spinbox'a  (Прочитано 3575 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн danya

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
теперь поточнее во общем нужно сделать так
вызвать QWidget и получить от него число затем передать это число ещё одной вызванной формы
вопрос заключается в следующем как?:)

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Смотри примеры в QT
Извините, я все еще учусь

Оффлайн danya

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Смотри примеры в QT
ага спасибо но я видимо плохо смотрел ах да форма создана в qt дизайнере ide qt creator
если вы хотите помочь а не пофлудить тогда назовите конкретный пример

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Это не флуд. Не хотите примеры - есть книжки, в которых написано, как это делать. Один раз разберетесь и дальше проблем не будет.
Извините, я все еще учусь

Оффлайн danya

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Это не флуд. Не хотите примеры - есть книжки, в которых написано, как это делать. Один раз разберетесь и дальше проблем не будет.
хорошо тыкните конкретно какой пример ибо я не увидел
тыкните в книжку опять же читал смотрел но не нашел то что мне нужно мне нужно вызвать формы созданные в qt designer'e

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Открываете QTCreator выбираете пример Standard Dialogs компилите и смотрите.
Извините, я все еще учусь

Оффлайн danya

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
вы читали мой первый пост?
где там написано про диалог?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Тогда приводите код, в котором что то не получается. С конкретным вопросом.
Извините, я все еще учусь

Оффлайн idsp

  • Любитель
  • *
  • Сообщений: 56
    • Просмотр профиля
    • блог невлюбленного гика
глянь тут http://www.prog.org.ru/topic_13852_0.html
получать значение со SpinBox нужно через метод value()

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
теперь поточнее во общем нужно сделать так
вызвать QWidget и получить от него число затем передать это число ещё одной вызванной формы
вопрос заключается в следующем как?:)
Нужно использовать QDialog, QWidget за крайне редким исключением должен быть один (твоё головное окно). Пример:
http://gitorious.org/mahjong-night/mahjong-night/blobs/master/mahjong-night/client/mainform.cpp#line107

Оффлайн danya

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
ну вот:)
как тогда передать значение с одного диалога другому?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
А какие у тебя с этим проблемы? Я не понимаю вопроса. Если ты можешь получить значение указанное в диалоге А, то какие проблемы это значение присвоить элементу диалога Б, перед тем как его показывать?

Оффлайн danya

  • Автор темы
  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
А какие у тебя с этим проблемы? Я не понимаю вопроса. Если ты можешь получить значение указанное в диалоге А, то какие проблемы это значение присвоить элементу диалога Б, перед тем как его показывать?
мнебы пример кода)

Оффлайн HolyMacaroni

  • Участник
  • *
  • Сообщений: 210
  • мегавольт
    • Просмотр профиля
Re: [qt] нужно вызвать форму из основной получит
« Ответ #13 : 02 Декабря 2010, 01:53:38 »
можно с помощью сигналов и слотов:
у тебя есть диалог с его классом, в нем объявляешь сигнал с параметром который будешь передавать, и коннектишь в его конструкторе со слотом, который уже объявлен в материнском окне. Выглядит так:

слот в основном окне:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <stdio.h>


namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);
QString IntToString(int numb);

private:
    Ui::MainWindow *ui;

public slots:
    void on_pushButton_clicked();
[color=red]    void TransmitParamSpinBoxSlot(int SpinBoxParam);[/color]
};


void MainWindow::TransmitParamSpinBoxSlot(int SpinBoxParam)
{
ui->lineEdit->setText(IntToString(SpinBoxParam));
};


сигнал объявляем
#ifndef SPINBOXDIALOG_H
#define SPINBOXDIALOG_H

#include "ui_SpinBoxdialog.h"
#include "QDialog"
#include "QWidget"

class SpinBoxDialog:public QDialog, public Ui::SpinBoxDialog{
    Q_OBJECT
public:
    SpinBoxDialog(QWidget *parent=0);


signals:
[color=red]void TransmitParamSpinBoxSignal(int SpinBoxParam);
[/color]
private slots:
    void on_pushButton_clicked();
};
#endif // SPINBOXDIALOG_H

коннектим в конструкторе, в *parent у нас указатель на класс материнского окна.
SpinBoxDialog::SpinBoxDialog(QWidget *parent)
{
    setupUi(this);
    connect(this,SIGNAL(TransmitParamSpinBoxSignal(int)),parent,SLOT(TransmitParamSpinBoxSlot(int)));

};

и собственно отправляем сигнал с параметром:
void SpinBoxDialog::on_pushButton_clicked()
{

    emit TransmitParamSpinBoxSignal( spinBox->value());
    emit close();
}


ПС: если что вот проект http://depositfiles.com/files/ml8v84osf  600к весит
« Последнее редактирование: 02 Декабря 2010, 01:57:14 от HolyMacaroni »
Asus X50N Ubuntu 10.04

 

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