2013-06-11 5 views
0

Я выбрал класс «A» с QT Designer. файл A.ui содержит TableView. мой вопрос: Я хочу, чтобы не делал всю обработку (traitingment) в классе A, я хочу создать другой класс B и, таким образом, сделать другое лечение. Эта обработка предназначена для отображения данных в Tableview (класс A). может получить доступ ко всем данным из TableView из другого класса В.QT, доступ ко всем данным другого класса

//A.h 
QStandardItemModel *table; 

//A.cpp 
table = new QStandardItemModel(10,2,this); //2 Rows and 3 Columns 
tables->setHorizontalHeaderItem(0, new QStandardItem(QString("Number"))); 
table->setHorizontalHeaderItem(1, new QStandardItem(QString("Name"))); 
ui->tableView->setModel(table); 

//B.cpp 
QAbstractItemModel* tableI= ui->tableView->model(); 
int iRows = tableI->rowCount(); 
table->setItem(0,0,new QStandardItem("100"); 
table->setItem(0,1,new QStandardItem("Name 1"); 
+0

Там нет методы 'QAbstractItemModel: : setItem'. Возможно, вы должны использовать 'QStandardItemModel' вместо этого. Используйте 'static_cast' для его преобразования. –

+0

это не таблицаI, а таблица, которая объявлена ​​в A. – physics

+0

QTableView также не имеет метода setItem. Пожалуйста, ознакомьтесь с документацией. –

ответ

1

Вы можете добавить функцию публичного участника чтобы получить доступ к табличному из другого класса:

QTableView* A::table_view() { 
    return ui->tableView; 
} 
+0

он работает очень хорошо, но когда я хочу установить некоторые данные, он не работает! – physics

+0

Будьте более конкретным. Что значит «установить некоторые данные?» Поместите некоторый код. –

+0

Посмотрите оригинальное сообщение, я добавил некоторые сведения – physics

Смежные вопросы