static QStack<QTableWidget*> undo_stack = *new QStack<QTableWidget*>();
static QStack<QTableWidget*> redo_stack = *new QStack<QTableWidget*>();
static int temp_reundo = 1;//撤销重做用
class Page0;
class Page1;
class Page2;
class Page3;
class MainWindow1 : public QWidget
{
public:
Page0 *page0;
Page1 *page1;
Page2 *page2;
Page3 *page3;
QString filename;
//ExcelHelper excelHelper;
//改为public static 以在Page中调用
static QTableWidget *dt;//初始表
static QTableWidget *dt_copy;//初始表
static QTableWidget *dt2;//端口定义表
static QTableWidget *dt3;//连接关系表
static QTableWidget *dt_partnum;//partnum类
static QTableWidget *dt_search;//搜索表
//撤消重做按钮
static QPushButton *undo;
static QPushButton *redo;
//combobox
static QComboBox *cb;
//search
static QTextEdit *search_tb;
public:
MainWindow1();
~MainWindow1();
static QString findIO(QString boxName,QString pinId); //根据BOX名和PIN找到分配的IO号
//bool cmp(QPair<int,int>a,QPair<int,int>b);//升序排列比较
static void update_dt23();//更新dt2和dt3
static void self_check();//自检 //(1)某条线有起点没有终点,(2)某导线所在box的pin number大于box的最大pin数量
static void partnum_combobox_update();//更新partnum的combobox的选择
void qTableWidget_Copy(QTableWidget *a, QTableWidget *b); //把表格a的东西复制给表格b
private:
void MenuItem_Exit_Click(QObject *obj, QEvent *event);//退出程序
void readExcel_Click(QObject *obj, QEvent *event);//读导入的Excel表
void readAll_Click(QObject *obj, QEvent *event);//四个表都读
void button_file_save_Click(QObject *obj, QEvent *event);//保存文件
//撤销重做指对dt的修改
void undo_Clicked(QObject *obj, QEvent *event); //撤销 /* 声明对象 undo 的槽函数 */
void redo_Clicked(QObject *obj, QEvent *event); //重做 /* 声明对象 redo 的槽函数 */
void searchButton_Click(QObject *obj, QEvent *event);//搜索
private slots:
void page0_Click(QObject *obj, QEvent *event);//page0导航按钮绑定事件,用来查看PartNumber表
void page1_Click(QObject *obj, QEvent *event);//page1导航按钮绑定事件,用来查看初始数据
void page2_Click(QObject *obj, QEvent *event);//page2导航按钮绑定事件,用来查看端口定义
void page3_Click(QObject *obj, QEvent *event);//page2导航按钮绑定事件,用来查看连接关系
};
#endif // MAINWINDOW1_H
MainWindow1::MainWindow1()//构造函数
{
page0 = *new Page0*();
page1 = *new Page1*();
page2 = *new Page2*();
page3 = *new Page3*();
//撤消重做按钮
undo->setEnabled(false);
redo->setEnabled(false); // 当setEnabled() 和 setClickable() 设置成false ,按钮就不可点击,设置成true,按钮就可以点击。
//dt_partnum 读已保存的文件
dt_partnum->setColumnCount(4);
dt_partnum->setItem(0,0,new QTableWidgetItem("PartNumber"));
dt_partnum->setItem(0,1,new QTableWidgetItem("Code"));
dt_partnum->setItem(0,2,new QTableWidgetItem("Step"));
dt_partnum->setItem(0,3,new QTableWidgetItem("Option"));
}
void MainWindow1::partnum_combobox_update()//更新partnum的combobox的选择
{
cb->clear();
for(int i=1;i<dt_partnum->rowCount();i++)
{
bool exist = false;
for(int j=0;j<cb->count();j++)
{
QString result = cb->itemText(j);
if(dt_partnum->item(i,0)->text()==result)
{
exist = true;
break;
}
}
if(exist==false)
{
cb->insertItem(cb->count(),dt_partnum->item(i,0)->text());
//指定位置插入单个item(在最后插入)
}
}
}
系统报错
error: undefined reference to `MainWindow1::cb'
error: undefined reference to `MainWindow1::dt_partnum'
头文件里有定义这些参数,为什么会报错?