crossplatform.ru

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


  Ответ в QT интерфейс, ООП
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
BRE Дата 24.2.2012, 21:24
  Не знаю для чего соединять кнопку Cancel со слотом, но может поможет...
Посмотри на QProgressDialog, в документации есть пример как его показывать и как обрабатывать нажатие Cancel.
Sokoloff Дата 24.2.2012, 11:13
 
Цитата(Гость_=DENIS=_* @ 22.2.2012, 23:51) *
Как правильно свзяать сигнал кнопки с внешним слотом (находится в основном классе Manger). Сделать механизм, подобный интерфейса, или сдалеать в WaitDialog функцию, в которую буду передавать SLOT(mySlot())???

Я бы сделал что-то вроде

Если не надо обрабатывать клик в WaitDialog.
//waitdialog.h
class WaitDialog: public QDialog
{
...

signals:
   void closeBtnClicked();
}

//waitdialog.cpp

WaitDialog::WaitDialog(QObject *parrent):QDialog(parrent)
{
    ...
    cancelButton = new QPushButton(tr("Cancel"));
    connect(cancelButton, SIGNAL(clicked()), this, SIGNAL(closeBtnClicked()));
}



Если WaitDialog должен что-то делать перед или после клика.
//waitdialog.h
class WaitDialog: public QDialog
{
...

private slots:
   void closeBtnClickedSlot();

signals:
   void closeBtnClicked();
}

//waitdialog.cpp

WaitDialog::WaitDialog(QObject *parrent):QDialog(parrent)
{
    ...
    cancelButton = new QPushButton(tr("Cancel"));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(closeBtnClickedSlot()));
}

void WaitDialog::closeBtnClickedSlot()
{
   ...
   emit closeBtnClicked();
   ...
}


Гость_=DENIS=_* Дата 23.2.2012, 14:48
 
Цитата(RazrFalcon @ 23.2.2012, 9:37) *
Можно в WaitDialog передавать указатель на класс Manger.
WaitDialog::WaitDialog(Manger *manger, QObject *parrent):QDialog(parrent)
{
    cancelButton = new QPushButton(tr("Cancel"));
    connect(cancelButton,SIGNAL(clicked()),manger,SLOT(mySlot());
}

Или при создании самого WaitDialog в классе Manger конектить его с вашим слотом в WaitDialog:
//в Manger создаем waitDialog, а затем:
    connect(waitDialog,SIGNAL(cancelButton_clcked(),this,SLOT(mySlot());

void WaitDialog::cancelButton_clcked() {
}
    //...
{


Да, так можно. А может попробывать сделать что-то подобное интерфейсу?
Гость_=DENIS=_* Дата 23.2.2012, 14:46
 
Цитата(RazrFalcon @ 23.2.2012, 9:37) *
Можно в WaitDialog передавать указатель на класс Manger.
WaitDialog::WaitDialog(Manger *manger, QObject *parrent):QDialog(parrent)
{
    cancelButton = new QPushButton(tr("Cancel"));
    connect(cancelButton,SIGNAL(clicked()),manger,SLOT(mySlot());
}

Или при создании самого WaitDialog в классе Manger конектить его с вашим слотом в WaitDialog:
//в Manger создаем waitDialog, а затем:
    connect(waitDialog,SIGNAL(cancelButton_clcked(),this,SLOT(mySlot());

void WaitDialog::cancelButton_clcked() {
}
    //...
{

RazrFalcon Дата 23.2.2012, 9:37
  Можно в WaitDialog передавать указатель на класс Manger.
WaitDialog::WaitDialog(Manger *manger, QObject *parrent):QDialog(parrent)
{
    cancelButton = new QPushButton(tr("Cancel"));
    connect(cancelButton,SIGNAL(clicked()),manger,SLOT(mySlot());
}

Или при создании самого WaitDialog в классе Manger конектить его с вашим слотом в WaitDialog:
//в Manger создаем waitDialog, а затем:
    connect(waitDialog,SIGNAL(cancelButton_clcked(),this,SLOT(mySlot());

void WaitDialog::cancelButton_clcked() {
}
    //...
{
Гость_=DENIS=_* Дата 22.2.2012, 22:51
  Есть класс WaitDialog унаследованный от QDialog

#include "waitdialog.h"
#include <QtCore/QString>
#include <QtGui/QLabel>
#include <QtGui/QPushButton>
#include <QtGui/QHBoxLayout>

WaitDialog::WaitDialog(QObject *parrent):QDialog(parrent)
{
    label = new QLabel(tr("Wait please"));
    cancelButton = new QPushButton(tr("Cancel"));
    QHBoxLayout *layout = new QHBoxLayout();
    layout->addWidget(label);
    layout->addWidget(cancelButton);
    setLayout(layout);
}

void WaitDialog::setText(QString mes)
{
    label->setText(mes);
}

QString WaitDialog::getText()
{
    return label->text();
}


Как правильно свзяать сигнал кнопки с внешним слотом (находится в основном классе Manger). Сделать механизм, подобный интерфейса, или сдалеать в WaitDialog функцию, в которую буду передавать SLOT(mySlot())???
Гость_=DENIS=_* Дата 12.2.2012, 10:05
  Спасибо за помощь.
BRE Дата 10.2.2012, 20:03
 
Цитата(Гость_=DENIS=_* @ 10.2.2012, 20:48) *
Так почему же в офф документации так пишут, для наглядности?

Это примеры, показывающие функционал Qt, а не то как правильно писать программы с использованием Qt.

Цитата(Гость_=DENIS=_* @ 10.2.2012, 20:48) *
И такой вопрос, как в QtDesignet назначить для основной формы основной мнеджер компановки, назначаемый функцией setLayout(QLayout *l); Что-то не нашел такого.

Выбираешь саму форму и выбираешь тип компановки в меню "Форма".

Цитата(Гость_=DENIS=_* @ 10.2.2012, 20:51) *
И как мне тогда лучше поступать, делать в С++ что-то подобное на интерфейсы в Java или передавать указатели на функции в интерфейс, чтобы эти функции выполнялись по нажатию кнопки?

В тех классах, объекты которых будут взаимодействовать с GUI, определять слоты и соединять сигналы от кнопок со слотами этих объектов-обработчиков.
Гость_=DENIS=_* Дата 10.2.2012, 19:51
  И как мне тогда лучше поступать, делать в С++ что-то подобное на интерфейсы в Java или передавать указатели на функции в интерфейс, чтобы эти функции выполнялись по нажатию кнопки?
Гость_=DENIS=_* Дата 10.2.2012, 19:48
 
Цитата(BRE @ 10.2.2012, 19:30) *
Прав. В идиале GUI должен легко убираться/заменяться на другой без ущерба для функциональности программы.


Так почему же в офф документации так пишут, для наглядности?

И такой вопрос, как в QtDesignet назначить для основной формы основной мнеджер компановки, назначаемый функцией setLayout(QLayout *l); Что-то не нашел такого.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 11:14