LINUX.ORG.RU

Вопрос по заголовкам КУТЭ

 , , , ,


0

1

Поясните за заголовки: пацаны с соседнего района прописывают чётко то, что им нужно:
#include <QPushButton>
#include <QLineEdit>
и всё в таком роде.

Мой батя всю жизнь писал #include <QtWidgets/QtWidgets> и сейчас он не последний человек в нашем гадюшнике.
Так в чём же смысл? Кто прав?

Когда-то давно, когда компьютеры были большими, а память маленькой, это имело смысл. Сегодня, если нет требования уложиться в определенный размер дистрибутива программы, смысла подключать отдельные виджеты мало.

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)

Срач тупоконечников с остроконечниками - вечен. Некоторые предпочитают быть конкретными (на районе и в коде - посоны оценят), другим хватает доминирования в ихнем гадюшнике. Их всех можно понять и простить.

slackwarrior ★★★★★
()

Чё-то ты погнал, гуи пишут только геи, свалил нах отсюда.

anonymous
()

Ну давай разберем по частям, тобою написанное ))

Складывается впечатление, что твой батя — лысый неофит))))))))

Берем в правую руку Qt5, в левую - гыцыцу, компилируем такую херню:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

//#include <QMainWindow>

#include <QtWidgets/QtWidgets>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Тут всё, ок, спору нет:

15:18:47: The process "/usr/bin/make" exited normally.

Затем меняем Qt5 в правой руке на Qt4 и пробуем компилякать снова:

In file included from ../../untitled2/main.cpp:1:0:
../../untitled2/MainWindow.h:6:31: fatal error: QtWidgets/QtWidgets: No such file or directory
 #include <QtWidgets/QtWidgets>
                               ^
compilation terminated.
make: *** [main.o] Error 1
15:20:40: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled2 (kit: Desktop Qt 4.8.4 GCC 64bit)
When executing step "Make"

Вот она, собака-то где зарыта. Итог:

+------+----------------+-----------------------+
|      | <QMainWindow>  | <QtWidgets/QtWidgets> |
+------+----------------+-----------------------+
| Qt 6 |      PASS      |          ????         |
| Qt 5 |      PASS      |          PASS         |
| Qt 4 |      PASS      |          FAIL         |
| Qt 3 |      PASS      |          FAIL         |
| Qt 2 |      PASS      |          FAIL         |
| Qt 1 |      PASS      |          FAIL         |
| Qt 0 |      PASS      |          FAIL         |
+------+----------------+-----------------------+

Вывод: не вытрёпывайся и пиши максимально кросс-платформенно. И бате своему скажи.
Потребовался отдельный виджет, определил его заголовок и всё. Нафига тебе вкомпилированное скопище всяких QLCDNumber, QMdiArea, QRubberBand и т. д. в программе?

+ Увеличенное в несколько раз время компиляции.

+ Геммор в бэкпортировании на Qt 4.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

Проиграл

exl@exl-Lenovo-G560e:~/Projects/untitled2 > ll
total 56
-rw-r--r-- 1 exl exl   172 Oct 12 15:09 main.cpp
-rw-r--r-- 1 exl exl   219 Oct 12 15:09 MainWindow.cpp
-rw-r--r-- 1 exl exl   324 Oct 12 15:37 MainWindow.h
-rw-r--r-- 1 exl exl   630 Oct 12 15:09 MainWindow.ui
-rw-r--r-- 1 exl exl   362 Oct 12 15:09 untitled2.pro

#include <QMainWindow>:

15:37:58: The process "/usr/bin/make" exited normally.
15:37:58: Elapsed time: 00:03.

#include <QtWidgets/QtWidgets>:

15:40:29: The process "/usr/bin/make" exited normally.
15:40:29: Elapsed time: 00:13.

EXL ★★★★★
()

Чёткие конкретные пацаны компилируют быстрее

Harald ★★★★★
()
Ответ на: комментарий от CrossFire

Когда-то давно, когда компьютеры были большими, а память маленькой, это имело смысл. Сегодня, если нет требования уложиться в определенный размер дистрибутива программы, смысла подключать отдельные виджеты мало.

Примерно год назад на современном железе я в полтора раза ускорил сборку одного проекта в десятки тысяч строк, просто почистив (в т.ч. таким образом) инклуды.

E ★★★
()
Последнее исправление: E (всего исправлений: 1)
Ответ на: комментарий от EXL

т.е. и на Qt4 тоже собралось с #include <QtWidgets/QtWidgets>? Я вот думаю, нафиг я тогда каждое прописываю, если размер динамически слинкованной либы все равно не уменьшится...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Нет. С #include <QtWidgets/QtWidgets> собирается только в Qt5. В том посте, на который ты ответил я использовал именно Qt5.

EXL ★★★★★
()
Ответ на: комментарий от CrossFire

При динамической линковке с Qt, как делают большинство программ, смысл вообще исчезающе мал.

hibou ★★★★★
()

Когда начнешь писать нормальные проекты, а не helloworld, поймешь, что скорость компиляции имеет значение.

g0t0
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.