Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/266: Рейтинг темы: голосов - 266, средняя оценка - 4.91
 Аватар для RazorQ
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386

Qt vs. .NET

07.09.2009, 20:11. Показов 53128. Ответов 312
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Лично я сделал для себя выбор: я буду учить и использовать библиотеку Qt. Во-первых, она кросс платформенная. Для меня это очень актуально, потому что приходится сидеть как на виндовс так и, в большей степени, на линуксе. Во-вторых, бесплатная. Впрочем за .NET тоже платить не надо, но все равно приятно. В-третьих, с ней приятно работать. Это уже не мой слова. Я их вычитал из книги, которая учит программировать с помощью Qt. Хочу услышать ваше мнение.
P.S. если вы не знаете ни одну из библиотек, то лучше ничего не пишите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2009, 20:11
Ответы с готовыми решениями:

Оптимизация производительности C#.NET (Алгоритм, Многопоточность, Debug, Release, .Net Core, Net Native)
Решил поделится своим небольшим опытом по оптимизации вычислений на C#.NET. НЕ профи, палками не кидать, конструктив приветствуется! ...

Объясните на пальцах совместимость библиотек в .Net Core, .Net Framework, .Net Standart
Изучаю .Net. Хочу написать некое серверное приложение (думаю что учеба лучше на реальном примере, нежели писать примитивные hello world)....

Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net
Всем привет! Нужно написать клиент-серверное приложение на основе Microsoft Sql Server 2005 Express Edition. Некое клиент-серверное...

312
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
07.02.2011, 18:22
Студворк — интернет-сервис помощи студентам
но при создании гуев ооп лучше. Зачем использовать методы 10 летней давности, когда можно использовать новые методы. Это относиться как к гуи так и вообще
Ооп тоже довольно старая штука. 80е - 90е годы 20 века. Может будем использовать что то поновее?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
07.02.2011, 18:25
Цитата Сообщение от @KOT@ Посмотреть сообщение
Но что чуть посложнее калькулятора и наследование удобно, а иногда и необходимо!
Ты все время говоришь про "удобно", но ни одного практического примера не привел. Даже сложнее калькулятора без наследования пишется также просто приведи пример задачи написания гуя, где без наследования сложнее реально. Пока от тебя я вижу лишь общие фразы.
0
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
07.02.2011, 18:28
Vourhey,
Я сталкивался с такими штуками, что надо наследвать от како-го то виджета и переопределять события. я конечно не профи, так что просвятите меня относительно того, как это можно сделать без наследования.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
07.02.2011, 18:31
Цитата Сообщение от Vanstorm Посмотреть сообщение
Я сталкивался с такими штуками, что надо наследвать от како-го то виджета и переопределять события.
К примеру, без наследования я указатель на функцию, инициализирую своей функцией. Соответственно по указателю в структуре будут вызываться мои функции, а интерфейс останется тем же.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
07.02.2011, 18:38
Цитата Сообщение от @KOT@ Посмотреть сообщение
А если например заранее не знаешь сколько нужно кнопочек. В коде можно их создавать в цикле, а как это сделать в редакторе форм?
Если не знаю - создам динамически (то бишь ручками в коде). Но зачем ручками создавать то, что можно сделать в дизайнере форм в случаях, когда тебе известно, что у тебя да как?

Цитата Сообщение от @KOT@ Посмотреть сообщение
Да я понимаю. Но все таки у программистов одинакового уровня джава программа будет работать медленнее программы на с++
Если програма с GUI, то ощутимой разницы скорее всего не будет. Если задача счётная (т.е. обработать мегабайт данных) - то да, джава будет медленнее (даже в варианте с JIT). Но речь вроде бы как о GUI тут идёт
0
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
07.02.2011, 18:54
Цитата Сообщение от Evg Посмотреть сообщение
Но зачем ручками создавать то, что можно сделать в дизайнере форм в случаях, когда тебе известно, что у тебя да как?
с этим согласен.


Цитата Сообщение от Evg Посмотреть сообщение
Если програма с GUI, то ощутимой разницы скорее всего не будет. Если задача счётная (т.е. обработать мегабайт данных) - то да, джава будет медленнее (даже в варианте с JIT). Но речь вроде бы как о GUI тут идёт
Мне в таких случаях вспоминается немножко тормознутый эклипс. Если бы эклипс был бы написан на с++ то я думаю тормозов не было б.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.02.2011, 19:25
Цитата Сообщение от @KOT@ Посмотреть сообщение
немножко тормознутый эклипс. Если бы эклипс был бы написан на с++ то я думаю тормозов не было б.
Странно, но я в еклипсе тормозов не наблюдаю. Я понимаю, если бы вы сказали тормоза в студии при открытии тулбокса - это да, он очень долго думает, но эклипс... Вы, кажется, в нем просто не работали
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
07.02.2011, 20:47
Цитата Сообщение от @KOT@ Посмотреть сообщение
Мне в таких случаях вспоминается немножко тормознутый эклипс
Эклипс - это программа, написанная на джаве. Чтобы её запустить, нужна некая среда, которая к программе (в данном случае эклипсу) отношения не имеет. Проблема скорее всего в Java runtime environment или его настройках или в чём-то другом. Потому что примитивные приложения такого уровня должны просто летать. Либо ты запускал это дело под линухом, где JRE вообще хз как настроено
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
07.02.2011, 22:13
Цитата Сообщение от oxotnik Посмотреть сообщение
тупо вывести в таблице из БД логическое поле вместо true/false галочку
Подробнее тз. И в чем именно сложность избежать наследования, не вижу.
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.02.2011, 23:41
Цитата Сообщение от Vourhey Посмотреть сообщение
Подробнее тз. И в чем именно сложность избежать наследования, не вижу.
Примеры из поставки посмотри
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
07.02.2011, 23:46
oxotnik, ну в общем, все понятно. Практической задачи при написании гуя, для которой реально бы понадобилось применить наследование - нет А галочку в таблицу я и в перле выведу, который даже не ООП полностью.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
07.02.2011, 23:49
Цитата Сообщение от oxotnik Посмотреть сообщение
Примеры из поставки посмотри
всё MVC же
тема превратилась в демагогию
если бы тема была бы Qt vs GTK+ наверно говорили бы "о, как же можно гуи без ооп"

виджет аналогичный QTreeWidget и его семейства - не спорю можно сделать без ооп, но оно тут кровь и плоть, паттерны проектирования черт побери, ну вы поняли мое мнение
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
08.02.2011, 00:20
Цитата Сообщение от Vourhey Посмотреть сообщение
oxotnik, ну в общем, все понятно. Практической задачи при написании гуя, для которой реально бы понадобилось применить наследование - нет А галочку в таблицу я и в перле выведу, который даже не ООП полностью.
Ну как же нет, а многопоточность? (и при написании гуя тоже )Что бы создать нить надо унаследоваться от QThread, прописать в приватном методе run() все логику потока. Без наследования тоже можно сделать, но это настолько через задницу будет...
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
08.02.2011, 00:23
Тут многое зависит от правил языка.
В одном, нужно юзать ООП на каждом шагу, а в другом, в этом нет необходимости - и так можно реализовать.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
08.02.2011, 00:27
Цитата Сообщение от oxotnik Посмотреть сообщение
Ну как же нет, а многопоточность?
QThread отношения к гую не имеет, все-таки Тем более, это легко заменяется любыми другими апи и библиотеками без ООП. К тому же, я в большинстве своем отвечал на тему "а как же гуй без ООП", чем на "Напишем гуй на Qt без наследования"
0
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
08.02.2011, 13:09
Цитата Сообщение от Vourhey Посмотреть сообщение
Ты все время говоришь про "удобно", но ни одного практического примера не привел. Даже сложнее калькулятора без наследования пишется также просто приведи пример задачи написания гуя, где без наследования сложнее реально. Пока от тебя я вижу лишь общие фразы.
Хорошо. привожу конкретный пример. Есть главная форма и нужно создать свое диалоговое окно с парочкой виджетов на нем. Как это реализуется в qt. Мы наследуемся от класса QDialog, создаем в своем классе парочку виджетов. А выводим мы это диалоговое окно с помощью метода базового класса show().
Если на то пошло, то для создания сигналов и слотов в своих классах мы обязаны унаследоваться от класса QObject ))
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
08.02.2011, 13:53
Пример не прокатил.
Цитата Сообщение от @KOT@ Посмотреть сообщение
Есть главная форма и нужно создать свое диалоговое окно с парочкой виджетов на нем
Создаем виджет главного окна, на нем другие виджеты - готово. Наследования нет.
Цитата Сообщение от @KOT@ Посмотреть сообщение
Если на то пошло, то для создания сигналов и слотов в своих классах мы обязаны унаследоваться от класса QObject ))
Если на то пошло, то это особенность именно Qt, потому что писать обработчики событий можно вообще без слотов, без сигналов, без наследования. Ты бы еще мне дал задание "унаследуй класс без наследования" - равносильно. Я беру практический пример - окна и любые компоненты можно создать без ООП легко. Приведи пример, где это сложно. Мне не нужно говорить, что я должен сделать внутри, ты покажи, чем это много сложнее сделать без ООП.
"Создай класс, создай в нем то и это" это не практический пример, это уже указание, как и что делать. А я говорю, что любой гуй легче легкого сделаю без наследования.

Добавлено через 1 минуту
Цитата Сообщение от @KOT@ Посмотреть сообщение
создаем в своем классе парочку виджетов
Ты опять указываешь, как и что мне писать в коде. А буду не в классе их создавать, а в функции создам. И в чем же сложность?
0
 Аватар для deadlock
378 / 358 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
08.02.2011, 13:54
Цитата Сообщение от @KOT@ Посмотреть сообщение
Хорошо. привожу конкретный пример. Есть главная форма и нужно создать свое диалоговое окно с парочкой виджетов на нем. Как это реализуется в qt. Мы наследуемся от класса QDialog, создаем в своем классе парочку виджетов. А выводим мы это диалоговое окно с помощью метода базового класса show().
Если на то пошло, то для создания сигналов и слотов в своих классах мы обязаны унаследоваться от класса QObject ))
если уж на то пошло - почти все объекты Qt наследуют QObject
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
08.02.2011, 13:54
@KOT@, возьмем perl-tk, который не ООП и без слотов, и без сигналов. Там я даже свой класс создать не смогу но не вижу никакой проблемы налабать гуй такой же как в Qt с классами
0
 Аватар для deadlock
378 / 358 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
08.02.2011, 13:57
@KOT@, ГУИ и ООП не обязательно взаимосвязанные вещи. Вот тебе ГУИ и ни одного класса и наследования:

Assembler
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
Программа
.386
.model flat,stdcall
 
option casemap:none
include masm32includewindows.inc
include masm32includeuser32.inc
includelib masm32libuser32.lib
include masm32includekernel32.inc
includelib masm32libkernel32.lib
 
 
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
 
.DATA                     ; Иницилизиpуемые данные
 
ClassName db "SimpleWinClass",0       ; Имя нашего класса окна
AppName db "Наше первое окно",0       ; Имя нашего окна
 
 
.DATA?                ; Hеиницилизиpуемые данные
hInstance HINSTANCE ?       ; Дескриптор нашей пpогpаммы
CommandLine LPSTR ?
.CODE                ; Здесь начинается наш код
start:
invoke GetModuleHandle, NULL  ; Взять дескриптор пpогpаммы
                                 ; Под Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
 
invoke GetCommandLine   ; Взять командную стpоку. Вы не обязаны
         ; вызывать эту функцию ЕСЛИ ваша пpогpамма не обpабатывает командную стpоку.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию
invoke ExitProcess, eax           ; Выйти из пpогpаммы.
                   ; Возвpащаемое значение, помещаемое в eax, беpется из WinMain
 
WinMain proc
 
   hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    LOCAL wc:WNDCLASSEX      ; создание локальных пеpеменных в стеке
    LOCAL msg:MSG
    LOCAL hwnd:HWND
 
 
    mov   wc.cbSize,SIZEOF WNDCLASSEX   ; заполнение стpуктуpы wc
    mov   wc.style, CS_HREDRAW or CS_VREDRAW
    mov   wc.lpfnWndProc, OFFSET WndProc
    mov   wc.cbClsExtra,NULL
 
    mov   wc.cbWndExtra,NULL
    push  hInstance
    pop   wc.hInstance
    mov   wc.hbrBackground,COLOR_WINDOW+1
 
    mov   wc.lpszMenuName,NULL
    mov   wc.lpszClassName,OFFSET ClassName
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov   wc.hIcon,eax
 
    mov   wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov   wc.hCursor,eax
    invoke RegisterClassEx, addr wc  ; pегистpация нашего класса окна
    invoke CreateWindowEx,NULL,
                ADDR ClassName,
                ADDR AppName,
                WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                NULL,
                NULL,
                hInst,
                NULL
    mov   hwnd,eax
    invoke ShowWindow, hwnd,CmdShow   ; отобpазить наше окно на десктопе
    invoke UpdateWindow, hwnd   ; обновить клиентскую область
 
    .WHILE TRUE   ; Enter message loop
                invoke GetMessage, ADDR msg,NULL,0,0
                .BREAK .IF (!eax)
 
                invoke TranslateMessage, ADDR msg
                invoke DispatchMessage, ADDR msg
   .ENDW
    mov     eax,msg.wParam ; сохpанение возвpащаемого значения в eax
    ret
 
WinMain endp
 
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
 
    .IF uMsg==WM_DESTROY            ; если пользователь закpывает окно
        invoke PostQuitMessage,NULL    ; выходим из пpогpаммы
    .ELSE
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam   ; функция обpаботки окна
        ret
    .ENDIF
    xor eax,eax
 
    ret
WndProc endp
 
 
end start
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2011, 13:57

Материалы по ADO.NET, ASP.NET, VB.NET
Народ, может, кто знает, где можно достать материалы в электронном виде по этим курсам (книги, обучающие материалы)? Подскажите, буду...

Нужны книги в электр виде по .Net (ADO.Net, C#) по русски желательно
Ктонть может прислать или выложить или дать готовые (не битые) линки. Буду очень признателен. Очень нужно...

Работа с Excel средствами VB.net. Как перевести код из VBA в VB.net?
Коллеги, добрый день! Нужна помощь! В свое время был написан макрос для Excel, но прошло и потребности выросли. Было принято...

Как указать VS.NET какой из установленный .NET Framewrok SDK использовать
У меня есть дистрибутив VS.NET2002. При инсталляции он ставит .NET Framewrok SDK v1.0.3705 Я скачал .NET Framewrok SDK v1.1.4322....

Инсталяция приложения VB.Net в системе без .NET Framework нужной версии
Работая под Win8.1 и Visual Studio 2010 Prof скомпилировал напсанный на VB.Net exe-файл прилолжения Windows Form. Хочу запустить это...


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

Или воспользуйтесь поиском по форуму:
280
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru