crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> mainwindow.ui и ui_mainwindow.h не связаны?
NordWest
  опции профиля:
сообщение 26.2.2013, 10:35
Сообщение #1


Студент
*

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

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




Репутация:   0  


В Креаторе правлю форму mainwindow.ui, но эти изменения не отражаются в программе. Т.е. сменил QTreeWidget на QTableWidget, но в программе не могу получить на него ссылку.
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    mainTable = qFindChild<QTableWidget*>(this, "tableWidget");
...
}

Выдает NULL.
Pаглянул в ui_mainwindow.h, а там всё прежнее, с QTreeWidget. Пришлось вручную менять. Но получается, что ui форма никак не связана с проектом. Отказываться от Дизайнера и влезать в ui_mainwindow.h, который должен бы генерироваться из .ui файла? И почему он этого не делает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 26.2.2013, 10:56
Сообщение #2


Старейший участник
****

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

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




Репутация:   8  


Чеклист:
0. ui добавлен в проект.
1. Сохранить ui в дизайне.
2. Собрать проект.

Кроме того не обязательно делать FindChild, можно просто обращатся через ui
ui->tableWidget


Сообщение отредактировал lanz - 26.2.2013, 10:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NordWest
  опции профиля:
сообщение 26.2.2013, 11:41
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(lanz @ 26.2.2013, 11:56) *
Чеклист:
0. ui добавлен в проект.
1. Сохранить ui в дизайне.
2. Собрать проект.

Кроме того не обязательно делать FindChild, можно просто обращатся через ui
ui->tableWidget

Все три пункта. Добавил ui_mainwindow.h, пересобрал, ничего. Удалил его (переименовал), ничего. Не генерируется он совсем из .ui файла как написано у него же в заголовке. Может как-то командно можно его генерацию выполнить?

Ага, дело в теневой сборке. Правильный фаил создается в отдельной директории. Но не понятно как к нему обратиться, ведь в mainwindow.cpp указан:
#include "ui_mainwindow.h"

И убрав его получаешь ошибку.

Ага, получилось. Видимо ui_mainwindow.h мешал в директории с исходниками. Нужно было его удалить, почистить проект и пересобрать. Тогда всё заработало.

Сообщение отредактировал NordWest - 26.2.2013, 11:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 26.2.2013, 15:50
Сообщение #4


Активный участник
***

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

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




Репутация:   3  


Цитата
Может как-то командно можно его генерацию выполнить?

Можно. http://qt-project.org/doc/qt-4.8/uic.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.2.2013, 17:27
Сообщение #5


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


NordWest, это такие грабли, связанные с местом расположения промежуточных файлов: к примеру, сначала была не теневая сборка, и файл ui_*.h сгенерился в папке проекта. Потом ты сменил настройки на теневую сборку, теперь файл генерится выше проекта, но! компилятор будет хватать старую версию файла (который не меняется после орудования в редакторе). Следовательно, в папке проекта следует удалить вручную все сгенерированные файлы. Потом полный ребилд - и всё наладится )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.2.2013, 15:17
Сообщение #6


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

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

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




Репутация:   94  


NordWest, я не вижу у тебя макроса Q_OBJECT.
Нет этого макроса - жди проблем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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