crossplatform.ru

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

> Изменение содержимого диалога при его повторном вызове
Adun177
  опции профиля:
сообщение 10.3.2009, 10:43
Сообщение #1


Студент
*

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

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




Репутация:   0  


Добрый день!
Программа работает с базой данных и отображает текущее состояние БД
Сделано стандартно по примеру QT - считывание с БД происходит в конструкторе
теперь я пытаюсь переопределить метод show но ничего не выводится
вот код. Нужно сделать так чтобы каждый раз при вызове диалога программа считывала с БД и создавала список.

Код
class EditExForm : public QWidget
{
    Q_OBJECT

public:
    EditExForm(QWidget *parent = 0);
    void set_dialog_create(QWidget *dialog_in){dialog_create=dialog_in;}
    void set_dialog_edit(EditForm *dialog_in){dialog_edit=dialog_in;}
    void set_dialog_db(QWidget *dialog_in){dialog_db=dialog_in;}

    protected:    
    virtual void show(void);

private slots:
    void on_IDCREATE();
    void on_IDREMOVE();
    void on_IDEDIT();
    void on_IDCANCEL();
    void on_IDC_LIST1();

private:
  
   QPushButton *ui_IDCREATE;
   QPushButton *ui_IDREMOVE;
   QPushButton *ui_IDEDIT;
   QPushButton *ui_IDCANCEL;
   QListWidget *ui_IDC_LIST1;
   QTextEdit *ui_IDC_EDIT1;
   QWidget *dialog_db;
   EditForm *dialog_edit;
   QWidget *dialog_create;
   QLabel *ui_label1;
   QGroupBox *ui_label2;
};

EditExForm::EditExForm(QWidget *parent)
:QWidget(parent)
{
QUiLoader loader;

    QFile file("widgeteditex.ui");
    file.open(QFile::ReadOnly);
    QWidget *formWidget = loader.load(&file, this);
    file.close();
    ui_IDREMOVE = qFindChild<QPushButton*>(this, "IDREMOVE");
    ui_IDCANCEL = qFindChild<QPushButton*>(this, "IDCANCEL");
    ui_IDC_LIST1=qFindChild<QListWidget*>(this,"IDC_LIST1");
    ui_IDC_EDIT1=qFindChild<QTextEdit*>(this,"IDC_EDIT1");
    ui_IDCREATE = qFindChild<QPushButton*>(this, "IDCREATE");
    ui_IDEDIT = qFindChild<QPushButton*>(this, "IDEDIT");
    ui_label1=qFindChild<QLabel*>(this, "IDC_STATIC1");
    ui_label2=qFindChild<QGroupBox*>(this, "IDC_STATIC2");
    
    ui_label1->setText(message[56]);
    ui_label2->setTitle(message[57]);
    ui_IDREMOVE->setText(message[59]);
    ui_IDCANCEL->setText(message[61]);
    ui_IDCREATE->setText(message[58]);
    ui_IDEDIT->setText(message[60]);


    connect(ui_IDREMOVE, SIGNAL(clicked()), this, SLOT(on_IDREMOVE()));
    connect(ui_IDCANCEL, SIGNAL(clicked()), this, SLOT(on_IDCANCEL()));
    connect(ui_IDEDIT, SIGNAL(clicked()), this, SLOT(on_IDEDIT()));
    connect(ui_IDCREATE, SIGNAL(clicked()), this, SLOT(on_IDCREATE()));
    connect(ui_IDC_LIST1, SIGNAL(itemSelectionChanged()), this, SLOT(on_IDC_LIST1()));
    
}
void EditExForm::show(void)
{
    QSqlQuery query6;
    query6.exec("SELECT ex_name,ex_name_desc,ex_id FROM exercizes ORDER BY ex_id");
    static bool flag=false;
    if ( query6.isActive() )
    {
        while ( query6.next() )
        {
            QString name = query6.value(0).toString();
            QString name2 = query6.value(1).toString();
            QListWidgetItem *newItem = new QListWidgetItem;
            newItem->setText(name);
            ui_IDC_LIST1->addItem(newItem);
            if (!flag)
            {    
                flag=true;
                ui_IDC_EDIT1->setText(name2);
            }

        }
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 10.3.2009, 15:13
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Adun177, я бы сделал примерно так (общий случай):
EditExForm::EditExForm(QWidget* p_parent) : QDialog(p_parent)
{
    model = new QSqlQueryModel; // QSqlQueryModel    *model;
    view->setModel(model);        // QListView        *view; (существует в ui-файле)
    update();

}

void EditExForm::update()
{
  QSqlQuery        q(db);
  QString        qstr, qerr;

    qstr = QString("SELECT ex_name,ex_name_desc,ex_id FROM exercizes ORDER BY ex_id")
    model->setQuery(qstr, db);
    qerr = model->lastError().text();
    qDebug() << "EditExForm, Error: " << qerr;


}

Применение
void MainWindow::SlotEditExForm()
{
    EditExForm    dlg(this);
    dlg.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 15.1.2025, 22:34