Форум программистов, компьютерный форум CyberForum.ru

Win32 API, MFC, или Windows Forms? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Visual C++ MFC смена типа приложения http://www.cyberforum.ru/cpp-beginners/thread1507468.html
Может кто подскажет, как без создания нового проекта переделать приложение с много документным интерфейсом в одно документный?
C++ Undefined reference to Много уже тем создано по даннму вопросу, но решения так и не нашел.. Есть конечно догадки, но как реализовать все равно не знаю. Прошу сильно не пинать, пытался сам разобраться, так и не смог. Начну по порядку: Определил класс GradeBook не расскрывая реализации элемент функций: #include <iostream> using namespace std; class GradeBook { public: GradeBook(string); http://www.cyberforum.ru/cpp-beginners/thread1507454.html
Заполнение символьной матрицы C++
Здравствуйте, У меня такой вопрос, хочу сделать char матрицу, но к сожалению, оно почему -то отображает не верно,,, заполняет так как надо, а выводит на экран - не правильно, в чем проблема? #include<iostream> using namespace std; void main() { const int size=5; char Star={0};
Обо всем! В кого выгодней переквалифицироваться программисту С++ ?
Здесь многие только начинают программировать... А вот кто уже работает программистом далеко не первый день и понимает, что хочется ему более высокооплачиваемой профессии, куда ему посоветуете переквалифицироваться? (это я не про себя :) )
C++ Задание имени файла пользователем при чтении и записи http://www.cyberforum.ru/cpp-beginners/thread1507391.html
Программа должна осуществлять запись в файл или чтение из файла (по выбору пользователя) целых чисел. Пока я написала вот такой код: #include <iostream> #include <fstream> using namespace std; int main() { int A,i, n; cout<<"Do you want to read or to write the file? Put 1 or 2."; cin>>A;
C++ Как работают ссылки 1 Здравствуйте маленький вопрос? int d; int &s=d; как работает почему их типы должны быть одинаковы? подробнее

Показать сообщение отдельно
Butt-Head
Заблокирован
01.08.2015, 07:24     Win32 API, MFC, или Windows Forms?
Цитата Сообщение от russian_pepper Посмотреть сообщение
Попробовал приложение Qt Quick, тоже получилось по умолчанию с тремя кнопками.
На самом деле - не стоит обольщаться. Пример с тремя кнопками сделан с помощью UI.QML файлов, что, мягко говоря не очень хорошо, т.к. на данный момент, QML - это как бы развивающаяся технология и многое там не доработано, изначально она была предназначена для гуя под мобильники, ну так вот, файлы типа ui.qml новичку лучше не использовать - берёшь и стираешь Там и редактор для них пока что убогий, ровно как и технологический там много нюансов по их использованию ... Лучше пока что делать GUI вручную в файлах типа QML.

Цитата Сообщение от russian_pepper Посмотреть сообщение
Но вот когда на место имеющегося кода в исходники/main.cpp подставил пример из книги, куча ошибок появляется и не получается Hello World.
Да... Книга то старая ... Там в основном изменились понятия о включаемых модулях так сказать.
Смотри, когда ты делаешь проект в QtCreator, то как бы то, что ты можешь подключать в коде посредствам директивы #include, нужно сперва объявить в PRO файле, см фторой файл сверху под названием проекта слева
Вот эта вот штука:
QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
говорит о том, что ты подключаешь к своему проекту модули core, gui и widgets, если быть точнее, ты как бы этим задаёшь пути к хедерам и автоматом подключаешь библиотеки, короче, если ты допустим хочешь использовать SQL, то пишешь там вдобавок или через пробел или отдельной строчкой: QT += sql. Название модулей конечно же не как захочется, но об этом позже ... Так вот, в книге скорее всего про файл левый...
Да, кстати, когда модули подключены правильно, то ты когда пишешь #include <... у тебя сразу имя нужно хедера находит, а если нет - значит ты модуль не тот подключил.

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

В общем, там вся разница с 4.8 Qt (а ты качал 5.5) в хедерах в данном случае... Есть понятие как бы - 4-й Qt и 5-й (ну не считая более ранних, так вот, 4-й хорошо отличается от 5-го).
Нынче не модно подключать какую - то ерунду и теперь если ты хочешь использовать класс QLabel, то его и надо подключать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <QApplication>
 
#include <QLabel>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    QLabel lbl("Hello, World !");
    lbl.show();
 
    return a.exec();
}
Не забывай, что первой строкой в коде должна быть строчка QApplication a(argc, argv);, а последней return a.exec();, запомни это как мантру Короче, этим ты инициализируешь базовый класс для GUIдных приложений и в ретурне запускаешь обработчик событий, который не вернёт управление до тех пор, пока его не попросят, по этому у тебя софт сразу не вылетает.

В общем, для того, чтоб твой убогий пример из книги заработал , тебе нужен CPP файл с кодом как выше, в PRO файле должны быть подключены гия и виджеты, допустим так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
QT       += core
 
QT       += gui widgets
 
TARGET = untitled5
CONFIG   += console
CONFIG   -= app_bundle
 
TEMPLATE = app
 
 
SOURCES += main.cpp
и чтоб лишнее окно консоли не вылетало при старте, можешь его отключить (оно вылетает, если ты в консольный проект вставил код, если в виджетный - то не вылетит).
Отключается оно так: на левой панели, где кнопки большие "начало", редактор, дизайн, отладка, проекты, анализ и спрака, жмёшь "ПРОЕКТЫ", сверху, где тёмный прямоугольничек с названием твоего комплекта для сборки, жмёшь на кнопку "ЗАПУСК" (сначала там горит "СБОРКА"), то есть ты теперь выставляешь параметры запуска и теперь тебе надо снять галку с "запускать в терминале", этот чек бокс под строкой "рабочий каталог"...

Цитата Сообщение от russian_pepper Посмотреть сообщение
А молоток нажимать обязательно? Я попробовал стрелку сразу нажать, всё тоже работает.
Не... не обязательно в принципе Я вообще себе управление, как в визуал студи настроил (Инструменты-Параметра-Среда-Клавиатура)... Иногда обязательно (зависит от комплекта), при добавление новых файлов запускать qmake перед сборкой. В общем новичком от многого спасает (меню сверху - Сборка - Запустить qmake)

По поводу PushButton и тд. Я даже не знаю, наверное пока кидаться в QML рановато, попробуй хоть что то сделать на виджетах (то есть проект QWidget, а не QtQuick).
Вот допустим создал ты проект обычный (приложение Qt Widget)
Зашёл в редактор форм, открыл свою главную форму (mainwindow.ui) (не путать с "плохими" файлами с расширением ui.qml ), перетащил из списка слева на неё допустим PushButton, оо круто! Теперь жмёшь по этому пушбаттану правой кнопкой мыши, ищешь "перейти к слоту" и жмешь по нему левой кнопкой
Тебе автоматом сгенерится код функции, которая будет вызываться при нажатие на эту кнопку. Что б в этом убедится, можешь добавить туда вывод в окно отладки посредствам qDebug
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{    
    qDebug() << "HELLO :-)";
}
Эту надпись нужно искать в QtCreator в окошке снизу под названием "Вывод приложения" (там где результаты поиска, проблемы, консоль сборки и тд)
Ну или можешь добавить что по круче:
C++
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    QMessageBox* pmbx =
                        new QMessageBox("MessageBox",
                        "<b>Hail</b> <i>to the king</i>   <u>baby!</u>",
                        QMessageBox::Information,
                        QMessageBox::Yes,
                        QMessageBox::No,
                        QMessageBox::Cancel | QMessageBox::Escape);
    int n = pmbx->exec();
    delete pmbx;
    if (n == QMessageBox::Yes)
    {
        qDebug() << "Нажата кнопка YES :-)";
    }
}
 
Текущее время: 06:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru