Qt 4 ile Programlama

Bu konuyu okuyanlar

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Merhaba Arkadaşlar,

Birkaç gün önce programlama konusunda yardım ararken değerli bir SDN üyesinden Qt ile ilgili çok faydalı bilgiler aldım. Bu bilgiler ışığında C++ gibi çok kuvvetli bir dili platformdan da bağımsız kullanabileceğimi ve bunun da yanı sıra istersen Linux üzerinde Windows için de program yazabileceğimi öğrenmek pek tabii benim için mükemmel bir fırsattı hemen kullanmaya öğrenmeye başladım.

Konu üzerinde acemi olduğumdan değerli abime özelden birkaç kez ulaştım ancak yardımlaşmamızın forum üzerinde olmasının hem bize hem de diğer ilgililere avantajlar sağlayacağını düşünerek bu konuyu açmayı uygun bulduk.

Sizlerden ricam konu hakında bilgi ve becerisi olan tüm SDN sakinlerinin bu başlık altından paylaşım yapmasıdır.

(Başlığı "Qt 4 ile C++ Gui Programlama" dan "Qt 4 ile Programlama" şeklinde değiştiriyorum zira Qt ile sadece C++ programlama yapılmıyor:)


Teşekkürler...
 

Mengu

Öğrenci
Katılım
20 Aralık 2010
Mesajlar
13
Reaksiyon puanı
2
Puanları
0
c++ bilmiyorsaniz ve c++ ogrenmek zor geliyorsa qt'un python baglayicilarini kullanabilirsiniz.
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Android için yazılım geliştirmek amaçlı olarak bir Api Grubu duyuruldu. Geliştiricisi Projeye "Necessitas" adını vermiş. Henüz denemedim fakat buradan projenin sayfasına gidebilirsiniz.
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
Qt'nin geleceğini şu saatten sonra çok merak ediyorum doğrusu. Çünkü Nokia Qt'yi symbian işletim sisteminde kullanmak için almıştı. Ama geçenlerde nokia yoluna win mobile 7 ile devam edeceğini bildirdi. Artık symbian olmayacağına göre Qt'yi geliştirmeyi de sona erdirebilir gibime geliyor.
 

orcnd

Dekan
Katılım
13 Ekim 2008
Mesajlar
6,394
Reaksiyon puanı
255
Puanları
63
bende qt öğrenmeye başlamıştım ancak nokianın hamlesinden sonra biraz soğudum. çünkü beni çeken kısmı hem mobil platformda hemde pc'de program geliştirebilmekti.
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Qt konusunda pek fazla şeyin değişeceğini sanmıyorum. Çok fazla alanda kullanılmaya başlandı. Python la olan ilişkisi de çok çok iyi. Nokia kendisi windows mobile kullansa da, ileride bunu yine değiştirebilir. Bunlar tamamen ticari kararlar. Qt yi bırakacağını sanmıyorum.
Oracle her an Java kodları üzerinde hak iddia edebilir. O kadar çok gelişme var ki bu aralar takip etmekde insan zorlanıyor.

Edit:

bende qt öğrenmeye başlamıştım ancak nokianın hamlesinden sonra biraz soğudum. çünkü beni çeken kısmı hem mobil platformda hemde pc'de program geliştirebilmekti.
Şunu karıştırmamak lazım. Qt bir dil değil. Java, Php, Phyton, C++, C# gibi diller ile geliştirme yapabileceğiniz bir arayüz takımı. Kocaman bir kütüphane ve içinde nerede ise yok yok.
Qt yi her an kullanmak isteyebilirsiniz. Bu durum da gayet doğal karşılanmalı.
Qt yi savunmuyorum yanlış anlamayın :) Demek istediğim bunu her platform için kullanabilirsiniz aslında. Yukarıda verdiğim haberde bahsettim, Android için uygulama yapılabiliniyor artık. Bu ne zaman olgunlaşır bilinmez.
Kaldı ki windowsda çalışan bir kütüphaneyi, windows mobile sürümlerine port etmek pek de zor olmasa gerek!
 

MtHan

Profesör
Katılım
3 Şubat 2008
Mesajlar
1,432
Reaksiyon puanı
14
Puanları
0
Nokia qt yi geliştirmeyi durdurmayacağını söyledi. Ayrıca PySide adında ticari olarak kullanılabilecek bir lisansla modül geliştiriyorlarmış.
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Neden durdursun ki :) Hemen her popüler programlama diline uyum sağlayan bir yapısı var. Bugün, yarın hangi teknoloji çıkarsa çıksın, ona uygun birşeyler yaparlar yine ve satmaya devam eder.
Qt Commercial sürümü hemen her yazılım geliştirme ortamından daha pahalı...
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Değerli programcı arkadaşlarım yine kafamın karışık olduğu zamanlardan birindeyim :(

Qt ile C++ programlama mükemmel bir şey bu benim şahsi fikrim ancak yakın bir dostum ve iyi bir programcı arkadaşım iyi bir iş çıkarmak için kolay yolları tercih etmektense (Qt vs. kastediyor) Visual Studio'da windows kütüphaleri ile bu işin yapılması gerektiği konusunda beni ikna etmeye çalışyor ve ısrarcı şekilde de yardımcı oluyor anlatıyor vs.. Fakat tüm bunların yanında ben görsel bir şeyler yapmanın bu arkadaşımın yöntemleriyle inanılmaz zor olduğunu görüyorum. İlk defa dökümana bakmama rağmen bu kadar zorlanıyorum diyebilirim. İçinde iki textbox iki buton 1 combobox 1 scroll bar olan ve herşeyi de tam manasıyla yerli yerine oturtamadığım bir program için şu kadar kodu sıfırdan elle yazmaktan bahsediyorum :(

Kod:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define IDI_TEXT1      10001
#define IDI_BUTTON1    10002
#define IDI_BUTTON2    10003
#define IDI_TEXTBOX1   10004
#define IDI_TEXTBOX2   10005
#define IDI_COMBOBOX1  10006
#define IDI_SCROLLBAR1 10007

WNDCLASSEX wcex;
HWND hw;
MSG m;

HFONT myfont;

HWND hwtext1;
HWND hwbutton1;
HWND hwbutton2;
HWND hwtextbox1;
HWND hwtextbox2;
HWND hwcombobox1;
HWND hwscrollbar1;

SCROLLINFO scrollbar1info;

LRESULT CALLBACK WndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
	wcex.cbSize=sizeof(WNDCLASSEX);
	wcex.style=CS_HREDRAW|CS_VREDRAW;
	wcex.lpfnWndProc=(WNDPROC)WndProc;
	wcex.cbClsExtra=0;
	wcex.cbWndExtra=0;
	wcex.hInstance=hInstance;
	wcex.hIcon=0;
	wcex.hIconSm=0;
	wcex.hbrBackground=(HBRUSH)(COLOR_3DFACE+1);
	wcex.hCursor=LoadCursor(0,IDC_ARROW);
	wcex.lpszClassName="MyClass";
	wcex.lpszMenuName=0;
	RegisterClassEx(&wcex);

	hw=CreateWindowEx(0,"MyClass","MyWindow",WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,200,200,500,400,0,0,hInstance,0);

	myfont=CreateFont(12,0,0,0,FW_DONTCARE,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"MS Sans Serif");

	hwtext1=CreateWindowExW(0,L"STATIC",L"This is a text",WS_VISIBLE|WS_CHILD,20,20,200,25,hw,(HMENU)IDI_TEXT1,0,0);
	hwbutton1=CreateWindowExW(0,L"BUTTON",L"Copy TextBox Content to Static Text",WS_VISIBLE|WS_CHILD,20,100,200,25,hw,(HMENU)IDI_BUTTON1,0,0);
	hwbutton2=CreateWindowExW(0,L"BUTTON",L"Get ComboBox Selection",WS_VISIBLE|WS_CHILD,20,140,150,25,hw,(HMENU)IDI_BUTTON2,0,0);
	hwtextbox1=CreateWindowExW(WS_EX_CLIENTEDGE,L"EDIT",L"This is a text box",WS_VISIBLE|WS_CHILD|ES_LEFT|ES_AUTOHSCROLL,20,55,200,21,hw,(HMENU)IDI_TEXTBOX1,0,0);
	hwtextbox2=CreateWindowExW(WS_EX_CLIENTEDGE,L"EDIT",L"This is\r\na multi line\r\ntext box",WS_VISIBLE|WS_CHILD|WS_VSCROLL|ES_LEFT|ES_MULTILINE|ES_WANTRETURN,240,55,200,202,hw,(HMENU)IDI_TEXTBOX2,0,0);
	hwcombobox1=CreateWindowExW(WS_EX_CLIENTEDGE,L"COMBOBOX",L"",WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST,240,25,120,200,hw,(HMENU)IDI_COMBOBOX1,0,0);
	hwscrollbar1=CreateWindowExW(0,L"SCROLLBAR",L"",WS_CHILD|WS_VISIBLE|SBS_HORZ,50,225,150,25,hw,(HMENU)IDI_SCROLLBAR1,0,0);

	SendMessage(hwtext1,WM_SETFONT,(WPARAM)myfont,0);
	SendMessage(hwbutton1,WM_SETFONT,(WPARAM)myfont,0);
	SendMessage(hwbutton2,WM_SETFONT,(WPARAM)myfont,0);
	SendMessage(hwtextbox1,WM_SETFONT,(WPARAM)myfont,0);
	SendMessage(hwtextbox2,WM_SETFONT,(WPARAM)myfont,0);
	SendMessage(hwcombobox1,WM_SETFONT,(WPARAM)myfont,0);

	SendMessage(hwtextbox1,EM_LIMITTEXT,25,0);

	SendMessage(hwcombobox1,CB_RESETCONTENT,0,0);
	SendMessage(hwcombobox1,CB_ADDSTRING,0,(LPARAM)"Combo");
	SendMessage(hwcombobox1,CB_ADDSTRING,0,(LPARAM)"Box");
	SendMessage(hwcombobox1,CB_ADDSTRING,0,(LPARAM)"Example");
	SendMessage(hwcombobox1,CB_ADDSTRING,0,(LPARAM)"Items");

	scrollbar1info.cbSize=sizeof(SCROLLINFO);
	scrollbar1info.fMask=SIF_RANGE|SIF_PAGE|SIF_POS;
	scrollbar1info.nMin=0;
	scrollbar1info.nMax=50;
	scrollbar1info.nPage=10;
	scrollbar1info.nPos=0;
	scrollbar1info.nTrackPos=0;

	SetScrollInfo(hwscrollbar1,SB_CTL,&scrollbar1info,1);

	ShowWindow(hw,SW_SHOW);

	while(GetMessage(&m,0,0,0)){
		TranslateMessage(&m);
		DispatchMessage(&m);
	}

	DestroyWindow(hwtext1);
	DestroyWindow(hwbutton1);
	DestroyWindow(hwtextbox1);
	DestroyWindow(hwtextbox2);
	DestroyWindow(hwcombobox1);
	DeleteObject(myfont);

	ShowWindow(hw,SW_HIDE);
	DestroyWindow(hw);
	UnregisterClass("MyClass",hInstance);
	ExitProcess(0);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
	unsigned short wParamH=HIWORD(wParam);
	unsigned short wParamL=LOWORD(wParam);
	if(Msg==WM_COMMAND){
		if(wParamH==BN_CLICKED){
			char txt[100];
			if(wParamL==IDI_BUTTON1){
				GetWindowText(hwtextbox1,txt,100);
				SetWindowText(hwtext1,txt);
			}else if(wParamL==IDI_BUTTON2){
				LRESULT i=SendMessageW(hwcombobox1,CB_GETCURSEL,0,0);
				wsprintf(txt,"%i",i);
				MessageBox(hw,txt,"ComboBox Value",MB_ICONASTERISK|MB_OK);
			}
		}
	}else if(Msg==WM_HSCROLL || Msg==WM_VSCROLL){
		int CurPos=GetScrollPos((HWND)lParam,SB_CTL);
		if(wParamL==SB_LINEUP || wParamL==SB_LINELEFT){
			CurPos-=1;
		}else if(wParamL==SB_LINEDOWN || wParamL==SB_LINERIGHT){
			CurPos+=1;
		}else if(wParamL==SB_PAGEUP || wParamL==SB_PAGELEFT){
			CurPos-=5;
		}else if(wParamL==SB_PAGEDOWN || wParamL==SB_PAGERIGHT){
			CurPos+=5;
		}else if(wParamL==SB_THUMBPOSITION){
			CurPos=wParamH;
		}else if(wParamL==SB_THUMBTRACK){
			CurPos=wParamH;
		}
		SetScrollPos((HWND)lParam,SB_CTL,CurPos,1);
	}else if(Msg==WM_CLOSE){
		int Result=MessageBox(hw,"Are you sure?","My Application",MB_ICONQUESTION|MB_YESNO);
		if(Result==IDNO){
			return 0;
		}
	}else if(Msg==WM_DESTROY){
		PostQuitMessage(0);
	}
	return DefWindowProc(hWnd,Msg,wParam,lParam);
}

Bunu bu şekilde öğrenmek ve kavramak ile Qt kütüphanelerini kullanarak kavramak bana neler kazandırır neler kaybettirir. Bilenler beni anlıyorlardır sanırım. Şimdiden teşekkürler...
 

mjsamet

Asistan
Katılım
22 Aralık 2009
Mesajlar
149
Reaksiyon puanı
1
Puanları
0
mcht_z arkadaşım senin kod önerin Win programlama. Eğer görsellik yapmak istiyorsan MFC kullanabilirsin ve form editörüde mevcut. Onlarla formunu rahatlıkla tasarlayabilirsin. Ama ben yinede QT öneririm, hem görsellik açısından gayet iyi, kendi IDEsi içinde form tasarlamak da gayet zevkli, kütüphanesi zengin ve bir çok platformda çalışıyor olması çeken özellikleri.
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Abov! Bu ne !? :S

Abi koda mı vurgu yoksa bana mı :) Yine yanlış yönlere daldım diye...

---------- Post added at 13:56 ---------- Previous post was at 13:53 ----------

mcht_z arkadaşım senin kod önerin Win programlama. Eğer görsellik yapmak istiyorsan MFC kullanabilirsin ve form editörüde mevcut. Onlarla formunu rahatlıkla tasarlayabilirsin. Ama ben yinede QT öneririm, hem görsellik açısından gayet iyi, kendi IDEsi içinde form tasarlamak da gayet zevkli, kütüphanesi zengin ve bir çok platformda çalışıyor olması çeken özellikleri.

Haklısın dostum tamamen katılıyorum ancak bizim programcı arkadaşlar neden bunu tasvip etmiyor onu anlamakta güçlük çekiyorum. Aslında bunun fikir alışverişini yapmak için yazdım yazıyı...
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
mcht_z Kardeş illa Visual Studio kullanacaksan Zaten Qt nin Visual Studio Eklentisi var. Onu Kurup kullanabilirsin.

Böylece Hem Visual Studio kullanırken, arada Qt kütüphanelerini işin içine katabilirsin. Ayrıca Visual Studio' nun eklentileri çok gelişmiş durumda. Nihayetinde yıllardır geliştirilen bir IDE.
 

raxetul

Profesör
Katılım
17 Nisan 2009
Mesajlar
1,405
Reaksiyon puanı
31
Puanları
48
Qt cross platform, ola ki linux e gemek istersin, kodda hemen hemen hiç değişiklik yapmana gerek kalmaz.
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Qt cross platform, ola ki linux e gemek istersin, kodda hemen hemen hiç değişiklik yapmana gerek kalmaz.

İşin bir de bu yönü var tabi.
Linux' da yapılan bir çok iş malesef Windows da çok zor bir de. Yani Linux programlama açısından daha kolay. Windows daha zor. Sistem arayüzleri kullanımı, süreç yönetimleri, servis yönetimleri Linux tarafında, windows' a göre çok daha rahat organize edilebiliyor.

Edit: Cevap

Gaz dediğin başarı ile gelir :) Başarmak işi bitirmek ile gelir. İşi bitirmek için araştırma yapmak lazım. Biraz dişini sıkman ve sürekli uygulama geliştirmen gerek. İhtiyacın olan bilgiyi nasıl araştıracağını bilirsen hiç bir sorun olmaz.

İyi programcı demek, kütüphane bilgisi olan demek değildir. Kullandığın dili ve onu yorumlayan derleyici/yorumlayıcıyı anlarsan, üzerinde geliştirme yaptığın ortamı (İşletim sistemleri ya da gömülü sistemler) iyi bilirsen sorunun kalmaz.

Kod yazmaktan ve araştırmaktan çekinmezsen sıkıntın kalmaz. :)
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
İşin bir de bu yönü var tabi.
Linux' da yapılan bir çok iş malesef Windows da çok zor bir de. Yani Linux programlama açısından daha kolay. Windows daha zor. Sistem arayüzleri kullanımı, süreç yönetimleri, servis yönetimleri Linux tarafında, windows' a göre çok daha rahat organize edilebiliyor.

Edit: Cevap

Gaz dediğin başarı ile gelir :) Başarmak işi bitirmek ile gelir. İşi bitirmek için araştırma yapmak lazım. Biraz dişini sıkman ve sürekli uygulama geliştirmen gerek. İhtiyacın olan bilgiyi nasıl araştıracağını bilirsen hiç bir sorun olmaz.

İyi programcı demek, kütüphane bilgisi olan demek değildir. Kullandığın dili ve onu yorumlayan derleyici/yorumlayıcıyı anlarsan, üzerinde geliştirme yaptığın ortamı (İşletim sistemleri ya da gömülü sistemler) iyi bilirsen sorunun kalmaz.

Kod yazmaktan ve araştırmaktan çekinmezsen sıkıntın kalmaz. :)


Teşekkürler abi iyi ki varsın.. Yazdıklarını okumak gerçekten de ilham veriyor bana... Tekrar teşekkürler...
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Rica ederim kardeş. :clover:
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Abi biz program yaptığımızda kütüphaneleri yanında vereceğiz tamam ama bir de iki dll'ye ihtiyaç duyuyor program. Qt ile ilgisi olmayan.

msvcp100.dll
msvcr100.dll bu iki dllyi visual studioda linker mevzusu ile hallediyorlar ama ben baya araştırdım Qt ile halledemedim. Yani bunları exe içine gömmekten bahsediyorum. Bunları da vermek istemiyorum programın yanında ayrıca.

Kod gösterimli şekilde yardımcı olabilir misin rica etsem :)
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Statik derleme yapman lazım. Sırf bunu yapman için yaklaşık 4 saatin gidebilir. http://psi-im.org/wiki/Compiling_Qt4_on_Windows Burada bir çözümü var fakat sana dll leri yanında dağıtmanı öneririm. Yoksa LGPL lisansının dışına çıkmış olursun.
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Bu adı geçen dll ler Qtnin dll leri değil abi bildiğim kadarıyla yine de LGPL dışına çıkmış mı sayılırım?
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Haklısın o dll ler Qt ye ait değil, cmake dosyaları. Fakat sen Visual Studio da cmake i kullanarak derleme yapıyorsun değil mi :) Bu yüzden cmake ile beraber Qt yi statik olarak derlersen ancak onlar gidecektir. Diğer türlü dll leri de yanında dağıtman gerekir. Zaten Visual Studio Ms. ürünü. Her türlü sıkıntılı anlayacağın :) Ben o yüzden Qt SDK Creator ve gcc kullanıyorum. :) statik de yapmıyorum hiçbir şeyi. Dağıtıma hazırlarken zaten kütüphane dosyaları oldukça hacim kayıp ediyor, kurulum dosyasının içinde.
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Anladım abi. Hemen başka bir soruya geçeyim. Ben kendim oluşturduğum tüm pencerelerin butonların vs. ayarlarını yapabiliyorum da o default mainwindow oluşturduğumuzda ana pencerenin özelliklerini kod ile düzenleyemiyorum. Oradaki class yapısını tam kavrayamadım sanırım. Kod ile ana program penceresinin koordinatlarını belirtmek istiyorum mesela (designerde seçmeye izin vermiyor) bunu setGeometry() ile nasıl yaparım? Yani kendim penceremi oluşturunca herşeyini kontrol edebiliyorum da qtnin kendi oluşturduğu pencereye etki edemiyorum :(
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Sorunun nedir tam olarak ? Eğer merkeze almak konusunda sorun varsa
Kod:
mainForm.setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, w.size(), qApp->desktop()->availableGeometry()));

gibi birşey olması lazımdı...

Bu tür şeyleri direkt dökümanların içerisinden rahatlıkla bulabilirsin. İngilizce anlamak konusunda sıkıntın varsa, google çeviri ye bakmaktan çekinme. Zamanla kelimelere alışırsın.
Kolay gelsin.
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Cevabın için teşekkür ederim. Senden çok az bir zaman önce çözmüştüm bu problemi :)

Ama tabi öğrenci demek her an bir problem demek :mrgreen:

Müsait olduğunda buna da bakıver abi.

Mainwindow'un yanında projeye bir tane de diyalog ekledim. Amacım main windowda iki buton var ilkine basınca kırmızı bir pencere diğerine basınca mavi bir pencere çıkması. Kod şöyle:

Kod:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"

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

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

void MainWindow::on_pushButton_clicked()
{
    Dialog *yeni = new Dialog(this);
    yeni->setWindowTitle(tr("Kırmızı Pencere"));
    yeni->setStyleSheet("*{background: red;}");
    yeni->move(500,110);
    yeni->show();
}

void MainWindow::on_pushButton_2_clicked()
{
    Dialog *yeni = new Dialog(this);
    yeni->setWindowTitle(tr("Mavi Pencere"));
    yeni->setStyleSheet("*{background: blue;}");
    yeni->move(500, 300);
    yeni->show();
}

Buradaki kod çalışıyor gayet güzel ancak, bu tıklanarak sonradan oluşturduğum pencereleri kapasam da exe'nin kullandığı bellek boyutunda bir değişim olmuyor. Yani bellekte kapladıkları alan silinmiyor. Bunu nasıl sağlarım?

Teşekkürler...

---------- Post added at 23:50 ---------- Previous post was at 23:17 ----------

Yine sen cevap vermeden hemen çözeyim bunun ile mevzuyu çözdüm :)

Kod:
yeni->setAttribute(Qt::WA_DeleteOnClose, true);
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Qt::WA_DeleteOnClose ;)

---------- Post added at 23:53 ---------- Previous post was at 23:52 ----------

:D Kuzene msn den yazarken cevabı yazmışın bile :D
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
Cevabı yazdım, gönder butonuna basmadım :D Kuzen fuara gidecekmiş onu konuşuyorduk, kalacak yer için :)
:D biraz da araştır diye sadece ip ucu veriyorum. Göster ama elletme hesabı :D, ama sen hızlı çıktın. Bence iyi gidiyorsun.

C++ da yıkıcılar nasıl kullanılır onu iyice öğren. Kalıtım vermeyi, almayı, işaretçileri ve adres tutma olayını vs. Bunları bilirsen, C++ ve Qt de programlama yaparken rahat olursun :)
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
evet abi balığı vermiyorsun elime :) genelde verdiğin olta oluyor :) Haklısın dediğin konulara da özel olarak çalışacağım. + Yazdığımız programlar C#'tan bile iyi çalışıyor performans olarak bu hoşuma gitti :mrgreen:
 

kosasker

Profesör
Katılım
24 Aralık 2008
Mesajlar
3,195
Reaksiyon puanı
49
Puanları
48
.Net kütüphaneleri yüklenene kadar... Ölme eşşeğim ölme... Tabi bir de kapanması var di mi :D
.Net zulüm bence... C#güzel bir dil, fakat .Net teknolojisi tırt. Java derim, başka da birşey demem. Python geliyor yavaştan... Bence güzel de geliyor.
 

mcht_z

Asistan
Katılım
12 Kasım 2010
Mesajlar
239
Reaksiyon puanı
0
Puanları
0
Hadi beyler ne bu sessizlik nerede bu coderlar? :turned:

Bana ufak zor olmayan bir proje verin. Qt ve C++ ile yapacağım bir şey üzerinde çalışmayınca monotonlaşıyor insan hadi bekliyorum :sneaky2:
 
Üst