Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 02:22   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию QT Creator, оконное приложение

Здравствуйте! Хочу попробовать собрать первое оконное приложение на QT, с чего начать, он ведь ООП тоже поддерживает, если можно, то приведите пару примеров. Допустим переделать код с ДЕлфи:

Код:

procedure....;
var  i:word;
s:string;
begin
s:=trim(edit1.text);
      for i:=1 to length(S) do
     memo1.lines.add(s[i]);
memo1.lines.savetofile('new_file.txt');

end;

Вот скрины того, что обнаружил у себя при создании проекта, и еще, на счет *.h -файла не очень понятно, как его создавать, как создать *.cpp (свой), чтоб потом можно было использовать функции из него, подключив свой прототип методом

#include "*.h" // ну к примеру my_fl.h

Конструктор форм QT отличается от делфийского очень


З.Ы. В консольном приложении использовали scanf();

В объектном режиме какой аналог?
Изображения
Тип файла: jpg конструктор.jpg (25.9 Кб, 119 просмотров)
Тип файла: jpg все что есть.jpg (10.8 Кб, 130 просмотров)
Тип файла: jpg код.jpg (27.3 Кб, 116 просмотров)
from dark to light)

Последний раз редактировалось Алексей_2012; 21.11.2014 в 02:25.
Алексей_2012 вне форума Ответить с цитированием
Старый 21.11.2014, 04:40   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

ТС, ты задал тысячу вопросов в одной теме. Так не делают.
Мне кажется, начать надо с книжек по С++.

Цитата:
Здравствуйте! Хочу попробовать собрать первое оконное приложение на QT, с чего начать, он ведь ООП тоже поддерживает, если можно, то приведите пару примеров
Тебе нужны окошки, но мне не понятно зачем ты сразу в дизайнер полез.
http://pro-prof.com/archives/619
Тут описан пример, а в конце есть архив с исходным кодом. В статье дизайнер не используется, т.к. с ним не так тривиально все.

Цитата:
Вот скрины того, что обнаружил у себя при создании проекта, и еще, на счет *.h -файла не очень понятно, как его создавать, как создать *.cpp (свой), чтоб потом можно было использовать функции из него, подключив свой прототип методом
Научись расставлять запятые и точки.
Я не знаю какой проект ты создавал, но у тебя стопудово QML на последней картинке. Я бы не советовал сразу лезть в QML.

Если очень хочется использовать Qt Designer для формошлепства - посмотри тут: http://pro-prof.com/archives/958 . По ссылке в третьем разделе описано как прикрупить форму, созданную в дизайнере к своей программе (описаны 2 варианта, но реально их чуть больше).

Хотя, я бы на дизайнер не очень рассчитывал. На нем удобно например нарисовать меню программы, форму логина и т.п., но ты просто неизбежно столкнешься со случаями, когда не получится вот так просто взять и мышкой натаскать элементы. Очень простой пример описан тут: http://pro-prof.com/archives/887 (игрушка "Сапер", исходник в конце как всегда). Если бы размер поля был фиксированным - ты мог бы использовать дизайнер, но если размер поля может меняться - дизайнер бессилен, ведь клеточки сапера должны добавляться динамически.

Цитата:
Конструктор форм QT отличается от делфийского очень
Не очень, просто ты залез в QML. Я ж грю - начни с чего-нибудь другого (описал выше с чего). Смотри ниже скриншот дизайнера - справа элементы, которые ты можешь вытащить на виджет, слева - настройки элементов. В делфи вроде бы также (ну или походе как минимум)

Цитата:
З.Ы. В консольном приложении использовали scanf();

В объектном режиме какой аналог?
Что такое "объектный режим"?
Если тебя интересует получение данных с поля ввода?
Код:
QLineEdit line;
QString str = line.text()
Прочитай в документации про классы, которые тебя интересуют.
Изображения
Тип файла: jpg 20.jpg (36.0 Кб, 124 просмотров)

Последний раз редактировалось rrrFer; 21.11.2014 в 04:43.
rrrFer вне форума Ответить с цитированием
Старый 21.11.2014, 09:13   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Да, с QML рано начинать. Я ещё сам с ним только знакомлюсь. Создайте обычный проект. Надеюсь, моя инструкция поможет: Первое оконное приложение на Qt (диалоговое окно)
8Observer8 вне форума Ответить с цитированием
Старый 21.11.2014, 12:37   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

8Observer8
Мне кажется ты оформлял такую же инструкцию на программерзфоруме, че ты на нее не ссылаешься? )
Вроде бы я видел у тебя какие-то инструкции на ФестСпеп, там не все?
rrrFer вне форума Ответить с цитированием
Старый 21.11.2014, 15:10   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Это не по теме. В личку бы лучше написал. Ну да ладно

Цитата:
Мне кажется ты оформлял такую же инструкцию на программерзфоруме, че ты на нее не ссылаешься? )
Здесь такой не было. Там удобнее, так как редактировать можно спустя время

Цитата:
Вроде бы я видел у тебя какие-то инструкции на ФестСпеп, там не все?
Перепишу актуальные туда по мере наличия времени. У меня все инструкции для начинающих
8Observer8 вне форума Ответить с цитированием
Старый 21.11.2014, 16:33   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Перепишу актуальные туда по мере наличия времени. У меня все инструкции для начинающих
Переписывай скорей, а-то тыж знаешь что на том форуме, куда ты ссылаешься почти всех забанили ))

Цитата:
Здесь такой не было. Там удобнее, так как редактировать можно спустя время
Тут есть вот такая штука: http://www.pblog.ru/
Что-то типа журнала, насколько я понимаю.
Возможно там редактировать можно... - надо узнать у админа.
rrrFer вне форума Ответить с цитированием
Старый 23.11.2014, 01:10   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо большое, очень полезная статья, но мне там много чего непонятно.

Код:

void Dialog::on_pushButton_clicked()
{

    // Get numbers
   float a = ui->lineEdit->text().tofloat();
   float b = ui->lineEdit_2->text().tofloat();

    // Sum
    float c = a + b;

    // Output
    ui->lineEdit_3->setText( QString::number( c ) ); // а что означает QString::number..?
}
1. Как преобразовать в вещественный тип строку? Выдает ошибку.
2. Как преобразовать в тип, подобный TdateTime ... (из даты/времени в строку и наоборот, не используя компонент)
3. Какой компонент есть, на подобии Tpanel, Timage?
4. А вот допустим как в Qtextedit поместить текстовый файл, как примерно с делфи

Код:
if not opendialog1.execute then exit;
memo1.lines.loadfromfile(opendialog1.filename)
З.Ы. Извиняюсь за столь большое количество вопросов, сейчас пытаюсь что-то сам написать исходники гляжу.

З.З.Ы. Хотел заполнить массив случайными числами и вывести в ТекстЕдит...не получилось

Код:
void Dialog::on_pushButton_2_clicked()
{


    const int n=100;
    float a1[n];
    for (int i=0;i<n;i++)
    {
        a1[i]=rand()%150;
        ui->TextEdit->setText( QString::number( a1[i] ) );
    }
}
from dark to light)

Последний раз редактировалось Алексей_2012; 23.11.2014 в 01:33.
Алексей_2012 вне форума Ответить с цитированием
Старый 23.11.2014, 06:01   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Спасибо большое, очень полезная статья, но мне там много чего непонятно.
Что именно не понятно В СТАТЬЕ?
rrrFer вне форума Ответить с цитированием
Старый 23.11.2014, 11:17   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
ui->lineEdit_3->setText( QString::number( c ) ); // а что означает QString::number..?
Функция setText принимает объект типа QString. Если мы напишем так: "ui->lineEdit_3->setText( c );", то компилятор выдаст ошибку, что невозможно преобразовать из float в QString. Поэтому перед тем как "скармливать" функции setText число, его нужно преобразовать в QString. Заведите привычку выделять функции и нажимать F1, чтобы читать документацию и понимать, что происходит

Цитата:
1. Как преобразовать в вещественный тип строку? Выдает ошибку.
Вот так:
Код:
    float num = 5.5;
    QString numStr = QString::number( num );
Цитата:
2. Как преобразовать в тип, подобный TdateTime ... (из даты/времени в строку и наоборот, не используя компонент)
В Qt есть аналог - это QDateTime. У многих классов есть метод для преобразования в строку: toString(). Пример:
Код:
    QDateTime time;
    time = QDateTime::currentDateTime();
    QString timeStr = time.toString();
Для того, чтобы вывести в консоль QString нужно преобразовать в std::string
Код:
std::cout << timeStr.toStdString() << std::endl;
Нажмите кнопку "Help" на панели справа и введите в поиске QDateTime Почитайте описание (правда я не читал, а надо бы) Я к тому, что перед тем как нужно что-то, то сначала вбиваете в гугле, что-то типа: как работать со временем и датами в Qt. Потом находите какие-нибудь примеры на форумах, блогах, заходите в "Help" и ищите описания функций, классов и т.д. (там тоже много примеров)

Цитата:
3. Какой компонент есть, на подобии Tpanel, Timage?
Tpanel вроде аналог QGroupBox... А для каких целей вы использовали Tpanel?

Timage аналог QImage

Цитата:
4. А вот допустим как в Qtextedit поместить текстовый файл, как примерно с делфи
Посмотрите стандарные диалоги из Qt Creator: нажмите кнопку "Welcome" (в левом верхнем углу) -> нажмите кнопку "Examples" -> в поле "Search in Examples" наберите: standard dialogs -> откройте найденный пример, там представленны все стандартные диалоги -> отройте файл "dialog.cpp" -> над редактором есть выпадающий список, нажмите на него и выберите функцию setOpenFileName

Добавьте на свой диалог кнопку с именем "Open File", после выбора файла мы знаем его полный путь, можем открыть файл и считать его содержимое с помощью метода .readAll(), как в примере:

Код:
void Dialog::on_pushButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName( this,
                                tr("Open File"),
                                QDir::currentPath(),
                                tr("Text Files (*.txt)") );

    // Если пользователь не выбрал файл и нажал "отмена"
    if ( fileName.isEmpty() ) {
        return;
    }

    // Открываем файл
    QFile file( fileName );
    file.open( QIODevice::ReadOnly );

    // Читаем текст в переменную text
    QString text = file.readAll();

    // Выводим текст в элемент QTextEdit
    ui->textEdit->setText( text );
}
Не забудьте написать: #include <QFileDialog>

Цитата:
З.З.Ы. Хотел заполнить массив случайными числами и вывести в ТекстЕдит...не получилось
Потому что метод setText() выставляет весь текст, а вам нужно добавлять, а это append(), вот пример:

Код:
    const int n = 100;
    float a1[n];
    std::srand( std::time( NULL ) );
    for ( int i = 0; i < n; i++ ){
        a1[i] = std::rand() % 150;
        ui->textEdit->append( QString::number( a1[i] ) );
    }
Программист обязан уметь находить информацию самостоятельно: сначала гугл, потом документация. Если нужно что-то комплекное и профессиональное, то смотрите в примерах C:\Qt\Qt5.3.2\Examples\Qt-5.3 Либо ищите похожие проекты здесь: http://qt-apps.org/ Все исходники открыты и их можно использовать в своих проектах

Вопросы хорошие задали. Пишите ещё, рад буду помочь

Последний раз редактировалось 8Observer8; 23.11.2014 в 11:22.
8Observer8 вне форума Ответить с цитированием
Старый 23.11.2014, 11:46   #10
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Программист обязан уметь находить информацию самостоятельно: сначала гугл, потом документация. Если нужно что-то комплекное и профессиональное, то смотрите в примерах C:\Qt\Qt5.3.2\Examples\Qt-5.3 Либо ищите похожие проекты здесь: http://qt-apps.org/ Все исходники открыты и их можно использовать в своих проектах
А я думаю это последствия видеокурсов и "пошаговых инструкций"/

Цитата:
Для того, чтобы вывести в консоль QString нужно преобразовать в std::string
Мне не в консоль надо, а в Поле ввода, что делать? И не строку, а текстовый файл, я же писал.
Цитата:
Нажмите кнопку "Help" на панели справа и введите в поиске QDateTime Почитайте описание
Ой, читать надо? - а видеокурса по DateTime нет? И видеокурс о том, как в поле ввода выводить текстовый файл тоже снимите.

Цитата:
Цитата:
3. Какой компонент есть, на подобии ... Timage?
Timage аналог QImage
Еще есть QPixmap и QPicture. А ТС я думаю вообще нужен QLabel, т.к. ему надо вывести картинку просто (и в статье, на которую я ссылался про это написано аж трижды). Но "полезная статья, но мне там много чего непонятно. ". Не понятно, потому что не читал.

Последний раз редактировалось rrrFer; 23.11.2014 в 11:56.
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оконное приложение дельфи Катерина Рыжая Помощь студентам 1 24.03.2013 23:49
оконное приложение Алексадр Демин Помощь студентам 1 09.03.2013 17:07
простейшее оконное приложение sergej735 Win Api 3 18.06.2011 10:40
оконное приложение programmm Win Api 1 16.05.2011 23:09