crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QDialog, button, dialog
Ov3r1oad
  опции профиля:
сообщение 2.3.2012, 15:07
Сообщение #11


Студент
*

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

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




Репутация:   0  


UPD: а, оказывается, данный ивент не вызывается при нажатии на кнопку, только при нажатии на крестик (ну либо ещё что-то).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Steklova Olga
  опции профиля:
сообщение 2.3.2012, 16:49
Сообщение #12


Участник
**

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

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




Репутация:   4  


Ov3r1oad,
1) код показывайте так:
[*expand=main.cpp][*code]код модуля[*/code][*/expand]
вместо символа * ничего не должно быть

2) у меня получился такой пример: :)
test_closeevent.pro
QT       += core gui
TARGET = test_closeevent
TEMPLATE = app
SOURCES += main.cpp\
        mainwindow.cpp \
    myprogressdialog.cpp
HEADERS  += mainwindow.h \
    myprogressdialog.h
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include "myprogressdialog.h"

class QProgressBar;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    MyProgressDialog *prbar;
};

#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include <QtGui>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    prbar = new MyProgressDialog();
    prbar->setMinimum(0);
    prbar->setMaximum(100);
    prbar->setValue(50);
    prbar->show();
}

MainWindow::~MainWindow()
{

}
myprogressdialog.h
#ifndef MYPROGRESSDIALOG_H
#define MYPROGRESSDIALOG_H

#include <QProgressDialog>

class QLineEdit;

class MyProgressDialog : public QProgressDialog
{
    Q_OBJECT
public:
    explicit MyProgressDialog(QWidget *parent = 0);
    void closeEvent(QCloseEvent *event);
    QString text;
    QLineEdit *edit;
signals:

public slots:
    void set_text(QString te);

};

#endif // MYPROGRESSDIALOG_H
myprogressdialog.cpp
#include "myprogressdialog.h"

#include <QtGui>

MyProgressDialog::MyProgressDialog(QWidget *parent) :
    QProgressDialog(parent)
{    
    edit = new QLineEdit(this);
    connect(edit, SIGNAL(textChanged(QString)), this, SLOT(set_text(QString)));
    edit->setText("");
    edit->setText("N");
}

void MyProgressDialog::set_text(QString te)
{
    text = edit->text();
}

void MyProgressDialog::closeEvent(QCloseEvent *event)
{
    if (text == "N")
        //MyProgressDialog не будет закрываться по кнопке "X",
        //пока текст в edit = "N"
        event->ignore();
    else
        //чтобы закрыть MyProgressDialog по кнопке "X",
        //меняем при работе проги текст в edit (чтобы был != "N")
        //и жмем кнопку закрытия MyProgressDialog
        event->accept();

    //независимо от текста в edit, можно закрыть MyProgressDialog по кнопке "Cancel"
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ov3r1oad
  опции профиля:
сообщение 2.3.2012, 17:08
Сообщение #13


Студент
*

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

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




Репутация:   0  


Steklova Olga, ну так а как сделать так, чтобы по кнопке cancel он не закрывался? Собственно, в этом был вопрос.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Steklova Olga
  опции профиля:
сообщение 3.3.2012, 19:27
Сообщение #14


Участник
**

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

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




Репутация:   4  


Ov3r1oad, а не проще ли тогда вместо использования QProgressDialog
создать просто виджет, на котором разместить QProgressBar и QLabel? И делайте тогда с ними, что хотите :clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.11.2022, 7:55