У меня есть проект Qt GUI и в файле «mainwindow.cpp» я должен определить функцию, которую я не могу объявить в «mainwindow.h». Но я хочу вызвать эту функцию (func_sqrt) в MainWindow и показать значение результата моего func_sqrt в метке. По какой-то причине мне нужно сделать это так. Но я не знаю, как подключить эту функцию к объектам графического интерфейса. Мой код выглядит так:
#include "mainwindow.h"#include "ui_mainwindow.h"
QString input;
void func_sqrt(int x);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
func_sqrt(2);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showtext(QString txt)
{
ui->lbl_value->setText(txt);
}
void func_sqrt(int x)
{
int y;
y = x*x;
}
Я добавил эту часть в функцию func_sqrt, но она не работает:
MainWindow *w = new MainWindow;
w->showtext(QString::number(y));
Прежде всего, ваш func_sqrt в настоящее время не работает. Затем, внутренне он вычисляет квадрат, но его имя говорит sqrt (сокращение от квадратного корня), вы можете проверить, соответствует ли имя семантике. Это для примечаний стороны.
Если вам нужна эта функция, доступная за пределами mainwindow.cpp, вы можете объявить ее в отдельном заголовке и включать ее везде, где это необходимо. Кроме того, вы можете объявить его в каждом файле, в котором он используется, компоновщик позже разрешит фактическую реализацию. Например, в файле subordinatewindow.cpp:
void func_sqrt(int);
// ...
int x{42};
func_sqrt(x);
Других решений пока нет …