总共三个文件,我有个对话框MyDialog,里面有一个表Table,当点击按钮data_base时,弹出新窗口MyDialog1 ,它也有一个表Table1 ,但这个Table1怎么才能复制MyDialog的Table的内容呢?可以通过Table->text()返回Table里面的值,但是我该怎么从Dialog1里面调用Dialog的Table的text()函数呢?
还有一个问题,我按下面的文件编译,出现dialog.cpp:‘w’ undeclared的错误,这w不是在main.cpp里面定义了么?为什么会在dialog.cpp里出现这样的错误?
第一个是main.cpp:
#include "dialog.h"
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
MyDialog* w = new MyDialog();
w->show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
}
第二个是dialog.h:
class MyDialog : public QDialog
{
Q_OBJECT
public:
MyDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
~MyDialog();
QTable* Table;
public slots:
virtual void gen_data();
};
class MyDialog1 : public QDialog
{
Q_OBJECT
public:
MyDialog1( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
~MyDialog1();
QTable* Table1;
public slots:
virtual void copy_data();
};
第三个文件是dialog.cpp:
#include "dialog.h"
MyDialog::MyDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl )
{
Table = new QTable( Tab_3, "Table" );
Table->setGeometry( QRect( -2, 90, 241, 191 ) );
Table->setNumRows( 10 );
Table->setNumCols( 10 );
data_base = new QPushButton( Tab_3, "data_base" );
data_base->setGeometry( QRect( 115, 15, 31, 21 ) );
data_base->setText( tr( "chaxun" ) );
MyDialog1 *dlg1 = new MyDialog1;
connect( data_base, SIGNAL( clicked() ), dlg1, SLOT( copy_data() ) );
MyDialog::~MyDialog()
{
}
void MyDialog::gen_data()
{
int i,j,k;
k = 0;
QString str;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
k++;
str = QString("%1").arg(k);
Table->setText(i,j,str);
}
}
MyDialog1::MyDialog1( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl )
{
Table1 = new QTable( this, "Table1" );
Table1->setGeometry( QRect( 5, 35, 230, 205 ) );
Table1->setNumRows( 10 );
Table1->setNumCols( 10 );
MyDialog1::~MyDialog1()
{
}
void MyDialog1::copy_data()
{
int i,j;
QString str;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
str = w->Table->text(i,j);
Table1->setText(i,j,str);
}
show();
}