Теперь я написал 2 класса кнопок в QT5, для добавления и установки их в пользовательском интерфейсе MainWidnow, я написал 2 функции, принадлежащие файлу maindow для почти одной и той же операции, каждая функция получит 2 типа аргументов, 1-й - пользовательский имя класса кнопки, 2nd - это QVector, содержащий несколько кнопок, принадлежащих к одному и тому же классу, я хочу использовать шаблон функции-члена, однако он не работает.
Некоторые сегменты кода, которые я разместил ниже:
// the 2 buttons classes I defined
// pic_btn.h, only show simplified codes
class pic_btn : public QWidget
{
...
};
// button.h, only show simplified codes
class button : public QWidget, private Ui::button
{
...
};
// In the mainwindow.h, I defined
protected:
template<typename v,typename c> void MainWindow ::add_allbtns(v vec ,c btn);
private:
QVector<button*> btns;
QVector<pic_btn*> pbtns;
// in the mainwindow.cpp
// the variables btn_names, btn_num,btns_w,btns_h,x_p,offsetY are pre-defined already.
template<typename v,class c> void MainWindow::add_allbtns(v vec ,c btn)
{
// add buttons,
for(int i=0;i<btn_num;i++)
{
btn *bt=new btn(btn_names[i]);
vec.push_back(bt);
}
//set buttons parent,size and positions
for(int i=0;i<btn_num;i++)
{
vec[i]->setParent(this);
vec[i]->setGeometry(0,0,btns_w,btns_h);
vec[i]->move(x_p[i],offsetY);
}
}
// I want to use it like the way below in the constructor of mainwindow.cpp
add_allbtns(btns,button);
однако, это не работает, и ошибка:
bt не было объявлено в этой области. , что происходит снизу
for(int i=0;i<btn_num;i++)
{
btn *bt=new btn(btn_names[i]);
vec.push_back(bt);
}
btn - это имя класса кнопки.
Любые советы о том, как его изменить?
Большое спасибо!