QTTab内に作成したObjectの操作の仕方
Qt 5.7.1 + Qt Creator 4.2.0の環境でアプリを作成しています。
QTで作成した可変するObjectへのアクセス方法がわからず質問させていただきます。
Window内にTabを作成し、その中にラベルとTextEditを作成し、
必要になった時、TextEditの文字列を変更する、TextEditの文字列を取得する
という内容を目指しているのですが、Tab内に作成したObject指定の方法がわからず
TextEditの文字列を変更することができていない状況です。
以下のような方法で作成しております。
一つのTabの中に最大64個のTextEdit欄を作成するという感じです。
Tabの名前が「Tab0」「Tab1」みたいになり、
Tab0内にQPlainTextEditで作成した入力欄が「te0」「te1」といった感じでいれています。
*tabWidgetからどうすれば作成したTab内のTextEditにアクセスできるでしょうか。
以上、よろしくお願いいたします。
private
QTabWidget *tabWidget;
void ParamTabWidget::WindowsSetting(unsigned int size)
{
int tabNum = 0;
int lastTabNum = 0;
tabNum = size / TABinItem;
if( size % TABinItem != 0 ){
tabNum++;
lastTabNum = size % TABinItem;
}
else{
lastTabNum = TABinItem;
}
/* make TAB */
tabWidget = new QTabWidget(this);
for( int i = 0; i < tabNum ; i++ ){
int startAddress = i * TABinItem;
int endAddress = startAddress + TABinItem - 1;
int makeTabCnt = TABinItem;
if ( i == tabNum - 1 ){
/* Last Tab */
endAddress = startAddress + lastTabNum -1;
makeTabCnt = lastTabNum;
}
/* make TAB name */
QString start,end,tabname;
start.setNum(startAddress);
end.setNum(endAddress);
tabname = start + " - " + end;
/* make TAB_Layout */
QGridLayout *lay = new QGridLayout();
for( int j = 0; j < makeTabCnt; j++ ){
if( j % 8 == 0 ){
/* make row label in TAB_Layout */
QString str1,str2;
str1.setNum( (i * 64) + j );
str2.setNum( (i * 64) + j+7 );
QLabel *label = new QLabel( str1 + " - " + str2);
label->setText( str1 + " - " + str2);
lay->addWidget(label, j / 8, (j % 8) );
}
/* make PlainTextEdit in TAB_Layout */
QPlainTextEdit *editor3 = new QPlainTextEdit("");
QString teObjName;
teObjName.setNum(j);
teObjName = "te" + teObjName;
editor3->setObjectName(teObjName);
editor3->setFixedSize(100,30);
lay->addWidget( editor3, j / 8, (j % 8) + 1 ); /* +1 with label */
}
/* add TAB */
QWidget *editor = new QWidget(tabWidget);
QString TabObjName;
TabObjName.setNum(i);
TabObjName = "Tab" + TabObjName;
editor->setObjectName(TabObjName);
tabWidget->addTab(editor, tabname);
/* set TAB_Layout */
editor->setLayout(lay);
//tabWidget->setCurrentIndex(i);
}
}