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

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

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: Спасите!!! файлы Ui  (Прочитано 22283 раз)
olefard
Гость
« : Ноябрь 09, 2009, 09:32 »

создаю форму в дизайнере, на ней treeWidget, к классу подключается через множественное наследование, затем необходимо при вводе в lineEdit и нажатию на кнопку создавать новые item в treeWidget, и чтоб они там сохранялись....как получить доступ к созданной в дизайнере форме....подобные темы есть в форуме, но разобраться как сделать в моем случае так и не удалось...помогите, пожалуйста
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Ноябрь 09, 2009, 11:55 »

>> но разобраться как сделать в моем случае так и не удалось.
Опиши чем твой случай отличается от тех, что есть на форуме.
Записан

Юра.
olefard
Гость
« Ответ #2 : Ноябрь 09, 2009, 12:05 »

treeWidget созданный в дизайнере изначально пустой...на форме есть lineedit и кнопка необходимо заполнить treeWidget item-ми, текст которых равен = тексту  lineedit, по нажатию кнопки. создаю слот
Код:
void Form3::on_pushButton_clicked()
{
    QString ret;
    ret = m_ui.lineEdit->text();



    QTreeWidgetItem* item =  new QTreeWidgetItem(0);
    m_ui.treeWidget->addTopLevelItem(item);
    item->setText(0,ret);

}

так вот...items добавляются в treeWidget, но не сохраняются там...если закрыть окно и снова открыть treeWidget пустой....как с этим бороться....или подскажите способ как создавать treeWidget и добавлять item, чтоб они там сохранялись???
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Ноябрь 09, 2009, 17:45 »

>>если закрыть окно и снова открыть treeWidget пустой
под окном понимается Form3?
полагаю тут UI-файлы не причём. Изобрази схематично, как у тебя взаимодействуют окна между собой, где, например, создаётся объект класса Form3?
Записан

Юра.
olefard
Гость
« Ответ #4 : Ноябрь 09, 2009, 19:02 »

Form3 создается динамически в слоте
Код:
void MainWindow::on_pushButton_2_clicked()
{

 Form3* st = new   Form3;

    st->show();

}

Записан
olefard
Гость
« Ответ #5 : Ноябрь 09, 2009, 19:03 »

Код:
class Form3 : public QWidget {
    Q_OBJECT
public:
    Form3(QWidget *parent = 0);
    Ui::Form3 m_ui;

protected:
    void changeEvent(QEvent *e);



private slots:
    void on_pushButton_clicked();
};
Записан
olefard
Гость
« Ответ #6 : Ноябрь 09, 2009, 19:05 »

и что??? как дальше быть??? как сделать правильно??? подскажите!!!Пожалуйста.. В замешательстве
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Ноябрь 10, 2009, 02:15 »

Тут проблема в Си++:
в функции void MainWindow::on_pushButton_2_clicked() ты всякий раз создаёшь новый объект, соответсвенно он пустой.

Вынеси объявление указателя Form3* st в объевление класса MainWindow, в конструкторе MainWindow обнули его, а в этой функции сделай так:
Код
C++ (Qt)
if (!st){
  st = new Form3(); // Создаём объект если указатель st ещё ни куда не показывает
}
st->show();    // отображаем объект
 

П.С. т.к. объект не имеет родителя, то удалять его прийдётся тебе ручками.
Записан

Юра.
olefard
Гость
« Ответ #8 : Ноябрь 10, 2009, 05:46 »

все так сделал...вылетает программа при нажатии на кнопку...для вызова Form3
Записан
olefard
Гость
« Ответ #9 : Ноябрь 10, 2009, 06:33 »

Как с этим бороться!!! Шокированный, может у кого есть примеры как правильно использовать на форме treeWidget и добавлять в него item???может необязательно treeWidget...любой другой список...ПОМОГИТЕ НАДО СРОЧНО!!!а то уже тихо схожу с ума Плачущий
Записан
olefard
Гость
« Ответ #10 : Ноябрь 10, 2009, 06:48 »

Вроде работает....при закрытии Form3, данные сохраняются....а как сделать чтоб они сохранялись и при перезапуске всей программы???
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #11 : Ноябрь 10, 2009, 09:41 »

сохранять в файл или например QSettings
Записан
olefard
Гость
« Ответ #12 : Ноябрь 10, 2009, 09:46 »

А по подробнее можно пожалуйста...и как это потом использовать???
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #13 : Ноябрь 10, 2009, 09:57 »

кого из? про QSettings все в доке
Код:
http://doc.trolltech.com/4.5/qsettings.html
кстати вспомнил что есть такая штука как сохранение состояния окна, как-то так:
Код:
 void MyMainWindow::closeEvent(QCloseEvent *event)
 {
     QSettings settings("MyCompany", "MyApp");
     settings.setValue("geometry", saveGeometry());
     settings.setValue("windowState", saveState());
     QMainWindow::closeEvent(event);
 }
 void MainWindow::readSettings()
 {
     QSettings settings("MyCompany", "MyApp");
     restoreGeometry(settings.value("myWidget/geometry").toByteArray());
     restoreState(settings.value("myWidget/windowState").toByteArray());
 }
может помочь
Записан
olefard
Гость
« Ответ #14 : Ноябрь 10, 2009, 10:04 »

а вы не могли бы объяснить, почему все так сложно...если дерево заполняется в Дизайнере, то все потом сохраняется, а если добавлять динамически, то нужны такие сложности, неужели никак нельзя добавить элемент, в уже существующее дерево и чтоб он там остался???
Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


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