crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Инициализация компонентов на форме, через конструктор?
grio
  опции профиля:
сообщение 25.1.2010, 19:06
Сообщение #1


Студент
*

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

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




Репутация:   0  


Парни, такой момент: мне надо что бы при отображении виджета инитился tableView на нем.
Но если я вызываю процедуру инициализации через конструктор,
то вызов происходит слишком рано, и инициализации не происходит.
Как правильно вызывать? Не по таймеру же.

пробовал через qWait - результат отрицательный.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 25.1.2010, 19:07
Сообщение #2


Профессионал
*****

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

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




Репутация:   44  


Ты бы с кодом показал, что хочешь инициализировать и когда?
А то не очень понятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
grio
  опции профиля:
сообщение 25.1.2010, 19:16
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(BRE @ 25.1.2010, 19:07) *
Ты бы с кодом показал, что хочешь инициализировать и когда?
А то не очень понятно.


1. Создаю форму.
2. В форме вызываю инит tableView
equipment_form::equipment_form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::equipment_form)
{
    ui->setupUi(this);
    on_btn_refresh_clicked(); //Инит таблицы
}

void equipment_form::on_btn_refresh_clicked()
{
    qWait(1000);
    QString queryString;
    QSqlQuery query;
    model_equipment = new QSqlQueryModel;
....
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 25.1.2010, 19:35
Сообщение #4


Профессионал
*****

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

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




Репутация:   44  


Что имеется ввиду
Цитата
Но если я вызываю процедуру инициализации через конструктор,
то вызов происходит слишком рано, и инициализации не происходит.

Инициализация чего не происходит, что не работает?
Как видишь, что не работает?

Сразу вопрос связанный с БД: база данных открывается до вызова конструктора equipment_form или после?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
grio
  опции профиля:
сообщение 25.1.2010, 20:30
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(BRE @ 25.1.2010, 20:35) *
Что имеется ввиду
Цитата
Но если я вызываю процедуру инициализации через конструктор,
то вызов происходит слишком рано, и инициализации не происходит.

Инициализация чего не происходит, что не работает?
Как видишь, что не работает?

Сразу вопрос связанный с БД: база данных открывается до вызова конструктора equipment_form или после?


БД открыта до создания формы.
Не происходит отображения выборки по причине, что параметр, передаваемый при создании окна не успевает проинициализироваться:
equipment_form *E_F = new equipment_form;
E_F->Firm_UID=Firm_UID; //вот эта переменная не передается во время.


Сейчас решил проблему, сделав фукцию инициализации публичной
и вызываю ее из родителя, а не из конструктора формы.
Думаю, так правильно. Однако, если есть альтернатива - пишите.

Сообщение отредактировал grio - 25.1.2010, 20:33
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 25.1.2010, 20:32
Сообщение #6


Профессионал
*****

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

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




Репутация:   44  


Передавай ее в параметрах конструктора:
equipment_form *E_F = new equipment_form( Firm_UID );

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.12.2024, 19:09