crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

ArhiZhek
  опции профиля:
сообщение 27.10.2011, 21:13
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 9.10.2011
Пользователь №: 2932

Спасибо сказали: 0 раз(а)




Репутация:   0  


хочу попробовать создать простейший калькулятор (только сумма), в один LineEdit вводим a, в другой LineEdit вводим b, щелкаем pushbutton - выводит результат в третьем LineEdit, и никак у меня не получается его реализовать - выводит пустое окошко, помогите найти проблему...
P.S. я только учусь прог-ть в Qt
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Sokoloff
  опции профиля:
сообщение 28.10.2011, 10:04
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Вы запутались с созданием widget-ов. Есть 2 подхода:
  • Используется дизайнер форм, и виджеты рисуются в нем.
  • Форму и виджеты создаются в коде, не используется ui-файл
Бывает, что на форму из дизайнера виджеты добавляются в коде, но на это должны быть причины. Скажем их количество может меняться. Это не Ваш случай.

Предлагаю начать с нуля. Создайте в креаторе новый проект "GUI приложение", форму наследуйте от MainWindow (хотя здесь это не принципиально).
Откроется редактор формы, накидайте на него 3 line edit-а и кнопку. По умолчанию эдиты имеют имена lineEdit, lineEdit_2 и lineEdit_3, кнопка - pushButton. Пусть так и называются.
Посмотрите на код:
// main.cpp
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
В большинстве программ в эту функция Вам ничего дописывать не придется. Может только перевод подключать.

//mainwindow.h
#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};


//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
Это минимальный код для формы. Можете запустить проект (Ctrl+R), покажется форма.
Теперь по клику на кнопке скопируем содержимое lineEdit в lineEdit_2.
Добавляем слот copyText и привязываем его к сигналу кнопки
//mainwindow.h
#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void copyText();
};


//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(copyText()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::copyText()
{
    ui->lineEdit_2->setText(ui->lineEdit->text());
}

Надеюсь стало понятнее, как обратиться к виджетам на форме.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.5.2025, 12:28