我上课printrectangle
class PrintRectangle : public QWidget
{
Q_OBJECT
public:
explicit PrintRectangle(QWidget *parent = 0);
private:
void resetClickedIndex();
void updateIndexFromPoint( const QPoint& point);
public:
int mXIndex;
int mYIndex;
QVector<QPoint> points;
bool clicked[5][5] = {};
teacher tech;
perceptron p[5][5];
double techconst = 0.1;
signals:
public slots:
protected:
void paintEvent(QPaintEvent *);
void mousePressEvent(QMouseEvent *eventPress);
};
和MainWindow
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_learn_clicked();
void on_classify_clicked();
private:
Ui::MainWindow *ui;
};
当我点击按钮时,我呼叫on_learn_clicked()
功能。我想将clicked[5][5]
数组转移到on_learn_clicked
,因为我在用户点击按钮时将此数组发送到其他对象。这该怎么做?
答案 0 :(得分:0)
目前尚不清楚MainWindow与PrintRectangle小部件之间的关系究竟是什么。我想按钮信号和PrintRectangle插槽连接在MainWindow实现中的某个地方。
解决问题的一种方法是使用QSignalMapper作为@Noidea声明。
另一种方法是在连接时使用lambda作为插槽。这样,您可以捕获范围内的发件人/收件人或其他对象并使用其成员。
中找到有关连接语法的一些信息但基本上你可以这样写:
connect(button, &QPushButton::clicked, this, [this, printRectangle]()
{
// do smth with clicked[5][5] from printRectangle or just
// retrieve it and call another method like:
// this->processClicked(printRectangle->clicked);
// or pass it to another object
}
这样你就可以使用bool [5] [5]参数将on_classify_clicked插槽修改为常规方法来进行处理。