Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
1

графический интерфейс к уже имеющемуся консольному приложению

18.05.2012, 03:23. Просмотров 4244. Ответов 22
Метки нет (Все метки)

Здравствуйте!!!
у меня есть консольное приложение на С++, как мне к нему сделать графический интерфейс???
обьясните пожалуйста простым языком.

должно получиться примерно следующее:
вводиться кол-о неизвестных и уравнений;
затем формируется окошко куда мы вводим коэфф-ы уравнений
кнопка решить систему уранений
у выводятся решения системы

не знаю даже с чего начать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2012, 03:23
Ответы с готовыми решениями:

бд и графический интерфейс
Уважаемые, форумчане! Посоветуйте пожалуйста, как проще всего привязать поля...

Создать графический интерфейс QT C++
#include <QCoreApplication> #include <iostream> using namespace std; class...

Создать графический интерфейс QT C++
#include <QCoreApplication> #include <iostream> using namespace std; class...

Как переделать в графический интерфейс?
Как все это связать с таблицей? что бы при ее заполнении и нажатии на кнопку,...

создать графический интерфейс на редакторе Qt
Мне вот тоже надо создать графический интерфейс на редакторе Qt и не знаю с...

22
Drus
57 / 57 / 1
Регистрация: 07.10.2011
Сообщений: 203
18.05.2012, 08:07 2
Давай помогу, начать хотя бы с этого:
http://ru.wikipedia.org/wiki/Qt

для начала хоть qt creator скачал? поставил?
=)
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
18.05.2012, 09:54  [ТС] 3
это все сделано еще давно, qt есть как в линуксе так и в винде( винда у меня в виртуальной машине)
до этого просто писал только консольные приложения, а тут вот курсовую делаю, и программка нужна с гуи, консольный вариант есть, как теперь графику сделать??? То что все работает на основе сигналов и слотов это понял, Бланшета читал (точнее читаль только первые главы, остальное только пролистал), но не могу понять как это все можно прикрутить к моей программке
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
18.05.2012, 09:58 4
самый простой вариант, это сначала нарисовать GUI в Creator затем реализовать сигнал/слот реализацию, что бы GUI реагировало на пользователя, а вот после этого уже прикручивать GUI к вашему консольному приложению, при этом надо понимать что просто склеить не получится, проще всего просто куски консольного приложения отвечающие за расчеты вклеить в приложение в GUI и уже с GUI их вызывать в том порядке в котором надо, но так сложно сказать не видя код консольного приложения
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
18.05.2012, 10:06  [ТС] 5
вот код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include<iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
   int i, j, n, m;
//создаем массив
   cout << "введи число уравнений: ";
         cin >> n;
         cout << "введи число неизвестных: ";
         cin >> m;
         m+=1;
    float **matrix = new float *[n];
         for (i=0; i<n; i++)
             matrix[i] = new float [m];
 
//инициализируем
 
    for (i = 0; i<n; i++)
 
        for (j = 0; j<m; j++)
        {
            cout << "Элемент " << "[" << i+1 << " , " << j+1 << "]: "  ;
 
            cin >> matrix[i][j];
}
 
 //выводим массив
    cout << "matrix: " << endl;
      for (i=0; i<n; i++)
       {
          for (j=0; j<m; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
       }
    cout << endl;
 
//Метод Гаусса
//Прямой ход, приведение к верхнетреугольному виду
    float  tmp, xx[m];
    int k;
 
    for (i=0; i<n; i++)
     {
       tmp=matrix[i][i];
         for (j=n;j>=i;j--)
             matrix[i][j]/=tmp;
           for (j=i+1;j<n;j++)
          {
             tmp=matrix[j][i];
               for (k=n;k>=i;k--)
             matrix[j][k]-=tmp*matrix[i][k];
          }
      }
  /*обратный ход*/
    xx[n-1] = matrix[n-1][n];
     for (i=n-2; i>=0; i--)
       {
           xx[i] = matrix[i][n];
           for (j=i+1;j<n;j++) xx[i]-=matrix[i][j]*xx[j];
       }
 
//Выводим решения
       for (i=0; i<n; i++)
           cout << xx[i] << " ";
       cout << endl;
 
    delete[] matrix;
 
   return 0;
}
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
18.05.2012, 10:19 6
ну так тут и привязывать то нечего, реализуйте создание массива, его инициализацию, вывод его через GUI и средствами GUI, а расчет реализуйте в слоте который свяжите с сигналом clicked() кнопки по нажатию которой надо произвести расчет....
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
18.05.2012, 10:42  [ТС] 7
можете подробней описать как это сделать,
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
18.05.2012, 11:06 8
что подробнее ? нарисуйте сначала интерфейс в QtCreator а там посмотрим что расписать вам подробнее

вот тут реализовал частично ваш GUI дальше думаю должны разобраться untitled22.rar
1
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
18.05.2012, 18:46  [ТС] 9
как создать матрицу разобрался(спасибо за пример), теперь как сделать чтобы при нажатии на кнопку выводилось решение???
тоесть нужно к кнопке приделать код где делаются вычисления, и затем вывести на форму. это все на обычном языке, но проблемка переноса это в qt
что то реально туплю с созданием гуи......
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
20.05.2012, 17:30  [ТС] 10
хелп!!! товарищи помогите, реально не могу разобраться с сигналами и слотами, на простых примерах все вроде понятно, а тут не могу понять
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
20.05.2012, 18:10 11
что конкретно не можете понять?

Добавлено через 1 минуту
сначало сделайте что бы оно просто считало а там уже придумаем как вывести результат
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
20.05.2012, 20:41  [ТС] 12
вот в этом и загвоздка, что не понимаю каким образом должны считываться данные из таблицы
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
20.05.2012, 21:12 13
а вы воспользуйтесь поиском на форуме, я уже раза 3 отвечал как взять данные из ячейки таблицы
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
23.05.2012, 11:57  [ТС] 14
как обращатся к какому-то элементу разобрался
C++ (Qt)
1
    qDebug() << ui->matrix->item(0,0)->text();
где задается тип данных получившейся таблицы?

Добавлено через 10 часов 28 минут
на кнопку сделал такую штуку:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
void MainWindow::on_pushButton_clicked()
{
    int column = ui->the_number_of_unknowns->value();
    int row = ui->the_number_of_equations->value();
 
 for ( int i = 0; i < row; i++)
    {
        for ( int j = 0; j < column+1; j++)
            {
            qDebug() << ui->matrix->item(i, j)->text();
            }
    }
}
в qDebug'е выводит введеные значения таблицы, вопрос теперь в следующем как эти значения запихать в метод Гаусса???
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
23.05.2012, 14:53 15
просто перевести их в int и подставить в соответствующее место метода....
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
23.05.2012, 19:03  [ТС] 16
почти все сделал, решение вывожу через qDebug, как сделать что бы в label выводилось??? ругается на несоответствие типов, или через что то другое можно вывести???

Добавлено через 3 часа 18 минут
так как мне решения то выводить?????????????

Добавлено через 11 минут
решения выводятся в массив типа double, как это можно вывести на форму???

Добавлено через 36 минут
C++ (Qt)
1
2
 for( i = 0; i < row; i++)
      ui->label_3->setNum(xx[i]);
выводится только один(последний) корень. в чем ошибка что не все выводит???
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
23.05.2012, 23:24 17
выводятся все только ты видишь последний, сначала сделай так:
C++ (Qt)
1
2
3
4
5
QString str;
for( i = 0; i < row; i++)
{
      str += QString("%1; ").arg(xx[i]);
}
и уже str указывай как текст лабел.....
1
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
24.05.2012, 06:29  [ТС] 18
еще одна проблемка есть... программа все считает правильно, но при закрытии пишет вот что:
Программа неожиданно завершилась.
C:\Qt_project\matrix\gui-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\debug\gui.exe завершился с кодом -1073741819

и вылазиет окошко отправки отета об ошибке?
подозреваю что это что-то с памятью, или я не прав???
0
Чистый
Автор FAQ
2714 / 1410 / 89
Регистрация: 08.09.2011
Сообщений: 3,741
Записей в блоге: 1
24.05.2012, 09:37 19
нет не правы что то с кодом программы а не памятью, показывайте его будем смотреть
0
KPN
4 / 4 / 1
Регистрация: 23.03.2012
Сообщений: 40
24.05.2012, 10:40  [ТС] 20
я имел ввиду что с управлением памятью.

mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
public slots:
    void on_create_matrix_clicked();
 
    void on_pushButton_clicked();
 
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include <QtGui/QApplication>
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    return a.exec();
}
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QTableWidgetItem>
#include<QDebug>
#include<QLabel>
#include<QString>
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
 
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
 
    delete ui;
}
 
void MainWindow::on_create_matrix_clicked()
{
    ui->matrix->clear();
    int column = ui->the_number_of_unknowns->value();
    int row = ui->the_number_of_equations->value();
    ui->matrix->setColumnCount(column);
    ui->matrix->setRowCount(row);
 
ui->matrix->setColumnCount(ui->matrix->columnCount() +1);
 
for( int i = 0; i < row; i++)
    {
     for( int j = 0; j < column; j++)
        {
         QTableWidgetItem * itm = new QTableWidgetItem();
            ui->matrix->setItem(i, j, itm);
        }
    }
}
 
void MainWindow::on_pushButton_clicked()
{
    int i, j;
    int column = ui->the_number_of_unknowns->value();
    int row = ui->the_number_of_equations->value();
 
// for ( i = 0; i < row; i++)
 //   {
  //      for (  j = 0; j < column+1; j++)
  //          {
    //             qDebug() << ui->matrix->item(i, j)->text();
   //         }
  //  }
 
double**matrix = new double *[row];
    for( i = 0; i < row; i++)
        matrix[i] = new double [column];
 
    for( i = 0; i<row; i++)
          for( j = 0; j < column + 1; j++)
               {
                     matrix[i][j] = ui->matrix->item(i,j)->data(0).toDouble() ;
               }
 
    //  for ( i = 0; i < row; i++)
    //     {
    //         for (  j = 0; j < column+1; j++)
    //             {
    //                    qDebug() << matrix[i][j];
    //             }
   //      }
 
    /*Метод Гаусса*/
double tmp, xx[column];
int k;
/*прямой ход*/
  for( i = 0; i < row; i++)
       {
            tmp = matrix[i][i];
                 for( j = row; j >= i; j--)
                      matrix[i][j] /= tmp;
                           for( j = i + 1; j < row; j++)
            {
                 tmp = matrix[j][i];
                      for( k = row ; k >= i; k--)
                           matrix[j][k] -= tmp*matrix[i][k];
            }
  }
/*обратный ход*/
xx[row - 1] = matrix[row - 1][row];
 for( i = row - 2; i >= 0; i--)
   {
       xx[i] = matrix[i][row];
         for( j = i + 1; j < row; j++)
           xx[i] -= matrix[i][j] * xx[j];
   }
 
 for( i = 0; i < column; i++)
     qDebug() << xx[i];
 
 
 QString str;
 for( i = 0; i < row; i++)
      {
           str += QString("%1; " ).arg(xx[i]);
      }
 
 for( i = 0; i < row; i++)
         ui->solve->setText(str);
 
 delete[] matrix;
}
0
24.05.2012, 10:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2012, 10:40

Графический интерфейс. Работа с кодом
Доброго времени суток, Дамы и Господа Программисты! Мне нужна малая ваша помощь...

Графический Интерфейс для Базы данных
у меня есть таблица в ней 8000+ записей. у каждой записи 51 параметр, никак не...

Qt Creator. Автоматическая запись виджетов в массив при создании через графический интерфейс?
Добрый день. При работе в Qt Creator есть необходимость создать кучу чекбоксов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru