这是一个简单的OOP QT问题.我的应用程序包括主窗口(QMainWindow)和一个表(QTableWidget).在主窗口中我有参数和变量,我想传递给表类,并从表类访问主widnow类中的方法,我该怎么办?
mainwindow.h
class MainWindow : public QMainWindow {
Q_OBJECT
private:
int a;
int b;
Spreadsheet *spreadsheet;
public:
void set_a(int);
void set_b(int);
Run Code Online (Sandbox Code Playgroud)
spreadsheet.h
class Spreadsheet : public QTableWidget {
Q_OBJECT
public:
Spreadsheet(QWidget *parent = 0);
Run Code Online (Sandbox Code Playgroud)
atm我定义了这样的电子表格:
spreadsheet = new Spreadsheet(this);
Run Code Online (Sandbox Code Playgroud)
我想从spreadsheet.cpp访问set_a()...
小智 10
你应该考虑一个不同的设计,你紧密耦合你的代码.
也许像以下那样......
class Spreadsheet : public QTableWidget
{
Q_OBJECT
signals:
void aValueChanged(int value);
void bValueChanged(int value);
public:
void doSomething()
{
emit aValueChanged(100);
}
};
class MainWindow : public QMainWindow
{
public:
MainWindow() :
a(0),
b(0)
{
connect(&spreadsheet, SIGNAL(aValueChanged(int)), this, SLOT(setA(int)));
connect(&spreadsheet, SIGNAL(bValueChanged(int)), this, SLOT(setB(int)));
spreadsheet.doSomething();
}
slots:
void setA(int value) { a = value; }
void setB(int value) { b = value; }
private:
Spreadsheet spreadsheet;
int a;
int b;
};
Run Code Online (Sandbox Code Playgroud)
这是完全未经测试但是给你一个想法.
| 归档时间: |
|
| 查看次数: |
2269 次 |
| 最近记录: |