Russian Qt Forum
Ноябрь 25, 2024, 00:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Qt-4.2.0 Linux ]Не выполняется конструктор при наследовании  (Прочитано 6039 раз)
izoomer
Гость
« : Ноябрь 20, 2007, 19:38 »

Странно , может заработался ... ... есть класс
Код:
class JDialog : public QDialog
{
Q_OBJECT
public:
JDialog(QWidget *parent = 0, JDeviceDispatcher * _device = 0 ,QString msg = 0, const QStringList & list = QStringList() << "Продолжить");
~JDialog();
uint  getCurrentButton();
void setTextMessage( QString );
QString getTextMessage();

private:
QListWidget * listButton;
QLabel * message;
QLabel * icon;
_dialogDelegate * delegate;
JDeviceDispatcher * _deviceDispatcher;


public slots:
void pressMainButton();
};


делаю от него производный класс

Код:
#ifndef JPROGRESSDIALOG_H
#define JPROGRESSDIALOG_H


#include <QTimer>
#include <JDialog.h>

class JProgressDialog : public JDialog
{
Q_OBJECT
public:
JProgressDialog(QWidget *parent = 0, JDeviceDispatcher * _device = 0 ,QString msg = 0, const QStringList & list = QStringList() << "Повторить" << "Отмена");

~JProgressDialog();
private :

JDeviceDispatcher * _deviceDispatcher;


QTimer progressTimer;
QLabel progressText;
bool activate;

QString message;

QTimer * activateProcessTimer;
public slots:
void pressMainButton();

void response( QByteArray );
void errorResponse( QString );
void cancel();
void retrive();
private slots:
    void activateInProgress();
};


JProgressDialog::JProgressDialog(QWidget *parent, JDeviceDispatcher * device, QString msg, const QStringList & buttons)
 : JDialog(parent, device, msg, buttons), _deviceDispatcher (device) , message(msg)
{
activateProcessTimer = new QTimer(this);
connect( activateProcessTimer, SIGNAL( timeout() ), this, SLOT( activateInProgress() ) );
}



Вопрос .. почему не выполняется конструктор класса JProgressDialog ? Где я неграмотен ?
Записан
Mixolap
Гость
« Ответ #1 : Ноябрь 20, 2007, 20:10 »

А прописал в реализацию конструктора вызов конструктора родителя?
JProgressDialog(QWidget *parent = 0, JDeviceDispatcher * _device = 0 ,QString msg = 0, const QStringList & list = QStringList() << "Повторить" << "Отмена"):JDialog(parent,_device,msg = 0,list)
{

}
Записан
izoomer
Гость
« Ответ #2 : Ноябрь 20, 2007, 21:56 »

А прописал в реализацию конструктора вызов конструктора родителя?
JProgressDialog(QWidget *parent = 0, JDeviceDispatcher * _device = 0 ,QString msg = 0, const QStringList & list = QStringList() << "Повторить" << "Отмена"):JDialog(parent,_device,msg = 0,list)
{

}
прописано конечно .
Записан
izoomer
Гость
« Ответ #3 : Ноябрь 21, 2007, 11:10 »

Эта , а код создания диалога можно в студию , а в данном случае ошибка в 13 строке Подмигивающий
это где же в 13 ? можно носом ткнуть ?
Это ФИДО'шный вариант анекдота про Петьку и В.И. Подмигивающий
Собственно имелось ввиду - без куска создания объекта гадать почему он(кусок) может не работать - можно до бесконечности ....

вот конструктор JDialog

Код:

JDialog::JDialog(QWidget *parent, JDeviceDispatcher * device, QString msg, const QStringList & buttons)
 : QDialog(parent), _deviceDispatcher(device)
{
setAttribute(Qt::WA_DeleteOnClose);
_deviceDispatcher->setObject(this);
setGeometry(0,0,800,600);

QFont fontMessage = QFont("Elektra Medium Pro", 0, QFont::Bold);
fontMessage.setStyleStrategy(QFont::PreferAntialias);
fontMessage.setPixelSize(20);

message = new QLabel(this);

QPalette messagePalette = message->palette();
messagePalette.setColor( QPalette::WindowText, Qt::white );

message->setGeometry(200,170,400,100);
message->setAlignment( Qt::AlignCenter );
message->setWordWrap(true);
message->setPalette(messagePalette);
message->setFont(fontMessage);
message->setText(msg);

listButton = new QListWidget(this);

foreach(QString text, buttons ){
QListWidgetItem * _item = new QListWidgetItem(text, listButton);
_item->setSizeHint(QSize(450,40));
}

listButton->setGeometry(175, 300, 450, 100);
listButton->setCurrentRow( 0 );
delegate = new _dialogDelegate();
QPalette _palete = listButton->palette();
_palete.setBrush(QPalette::Base, Qt::transparent);
listButton->setPalette( _palete );
listButton->setFrameStyle(QFrame::NoFrame);
listButton->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
listButton->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
listButton->setItemDelegate(delegate);
}

Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Ноябрь 21, 2007, 11:40 »

Приведите код как создаеться диалог JProgressDialog
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
izoomer
Гость
« Ответ #5 : Ноябрь 21, 2007, 16:02 »

Приведите код как создаеться диалог JProgressDialog

было в начале поста ... вот есче раз ....

Код:
JProgressDialog::JProgressDialog(QWidget *parent, JDeviceDispatcher * device, QString msg, const QStringList & buttons)
 : JDialog(parent, device, msg, buttons), _deviceDispatcher (device) , message(msg)
{
        qDebug() << "конструктор";
activateProcessTimer = new QTimer(this);
connect( activateProcessTimer, SIGNAL( timeout() ), this, SLOT( activateInProgress() ) );
        activateProcessTimer->start(500);
}


Записан
Вячеслав
Гость
« Ответ #6 : Ноябрь 21, 2007, 16:12 »

Это определение конструктора , а не создание объекта
хочеться видеть строчку типа JProgressDialog *d = new JProgressDialog(.........)
Записан
izoomer
Гость
« Ответ #7 : Ноябрь 21, 2007, 17:38 »

Это определение конструктора , а не создание объекта
хочеться видеть строчку типа JProgressDialog *d = new JProgressDialog(.........)
от тормоз я .. как всегда, надо больше отдыхать ... создавал то JDialog в new .... спасибо что ткнули носом
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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