У вас проблемы с пониманием работы указателя.
*CorrectID = ui->lineEdit_CurrentID->text().toInt();
Этот код разыменовывает ваш указатель и присваивает значение справа адресу, на который он указывает. Для этого уже нужно указать на какой-то адрес. Прямо сейчас, учитывая код, который вы разместили в своем «ответе», его не будет.
Вам необходимо назначить адрес указателю, иначе он может содержать случайную бессмыслицу, которая легко приводит к сбою. Вы можете сделать это так:
CorrectId = new int;
, который создает новую переменную в куче и использует этот адрес, хотя это, скорее всего, недопустимый идентификатор.
Или, учитывая ваш код ответа, вы можете создать переменную стека в области действия main и установить указатель на нее, хотя это не будет хорошим дизайном.
При этом, наверное, важнее: старайтесь избегать глобальных переменных. Я не знаю ваш дизайн, поэтому я не могу сказать вам, как вы должны это сделать, но то, что указатель является глобальной переменной, для меня - красный флаг. Наличие идентификатора, которым можно манипулировать со всех сторон, также возможно, даже если вместо этого вы используете инъекцию. Скорее всего, вам следует создать класс, который хранит CorrectID в качестве члена и таким образом получает владение . Ссылка на этот класс разделяется путем внедрения, и любые манипуляции с членом выполняются через интерфейс класса. Опять же, я не знаю ваш большой дизайн, но в большинстве случаев это будет путь.
Учитывая ваш другой код, это можно сделать просто, сделав его элементом вашего главного окна. Или у вас есть какой-то другой класс, который управляет вещами, на которые в главном окне есть указатель. Лучше всего было бы, если бы вы дали нам контекст.
Возможный макет вашего проекта:
class IDController
{
private:
int _ID;
public:
void setID(int ID) { _ID = ID; }
const int& ID() const { return _ID; }
};
int main(int argc, char *argv[])
{
IDController controller;
QApplication a(argc, argv);
MainWindow w(&a, &IDController);
...
}
class MainWindow : public QMainWindow
{
...
private:
IDController* controller;
...
MainWindow::MainWindow(QWidget* parent, IDController* controller) :
QMainWindow(parent),
controller(controller)
ui(new Ui::MainWindow)
{
...
void MainWindow::on_pushButton_clicked()
{
controller->setID(6);
}
Имя IDController должно быть заменено более органичным именем, некоторым классом, к которому принадлежит идентификатор. Обратите внимание, что я не инициализирую _ID, что плохо. IDController должен иметь некоторый определенный конструктор. Если идентификатор является очень изменчивым, можно решить удалить метод получения и установки из контроллера и сделать его общедоступным, но, скорее всего, вместо этого вы хотите расширить методы установки и получения для выполнения некоторых дополнительных действий (например, проверки того, что данный идентификатор действует).