Для того, чтобы найти логическую ошибку в программе, можно использовать вывод отладочных сообщений, например выводить результаты промежуточных вычислений.
В качестве примера создадим программу, которая проверяет, является ли число степенью двойки. Для вывода результатов промежуточных вычислений используем оператор потокового вывода qDebug(). Использование этого оператора аналогично использованию потокового вывода cout.
Создайте проект на основе диалогового окна и спроектируйте его как показано на рисунке.
Первое окно по умолчанию имеет идентификатор lineEdit, второе — lineEdit_2.
Создайте слот для кнопки «Проверить» и напишите код как показано ниже.
#include "dialog.h"
#include "ui_dialog.h"
#include <QtDebug> // Обеспечивает работу qDebug()
#include <QtextCodec> // Обеспечивает спользование кириллицы
#include <math.h> // Обеспечивает работу математических функций
#include <QMessageBox> // Обеспечивает использование окна сообщений
Dialog::Dialog(QWidget *parent):
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
|
|
adjustSize(); //
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QtextCodec::setCodecForCStrings(codec);
int n = ui->lineEdit->text().toInt(); // считываем целое число
if (n >= 0)
{
int s = 1;
while (s < n)
{
s *= 2; // вычисляем степень 2
qDebug() << "Степень 2: "<< s;
// выводим очередную степень в окно Application Output
}
// выводим результат:
if (s==n) ui->lineEdit_2->setText("Это степень 2");
else ui->lineEdit_2->setText("Это не степень 2");
}
else
{
ui->lineEdit_2->setText("");
QMessageBox::critical(this, "Сообщение об ошибке",
"Число должно быть >= 0");
}
}
При использовании окна сообщений QMessageBox первый параметр - указатель на родительское окно, второй - заголовок окна, третий - непосредственно сообщение.
Запустите программу (<Ctrl>+<R>), задайте число, нажмите кнопку и посмотрите результат работы qDebug() в окне Application Output.
Если по какой-то причине Ваша программа зацикливается, используйте системный монитор (System | Administration | System Monitor). В списке Processes найдите имя Вашего проекта, щелкните по нему правой кнопкой мыши и выберите «Kill Process».