Fönsterprogrammering

Att skapa fönster med; Qt, Gtk, Gnome m.m.
Post Reply
User avatar
Mr_CHISOL
Posts: 43
Joined: 4 September 2003, 10:43
Location: Linköping
Contact:

Fönsterprogrammering

Post by Mr_CHISOL » 17 March 2004, 14:39

Hej!

Jag och tre andra har tänkt att göra ett program i c++, relativt stort sådant. I programmet ska bl.a. ritas bilder m.m.

Tanken är att programmet i första hand ska köras i windows, men sedan ska det förmodligen portas till Linux, därför undra jag vad Ni tycker att Vi ska använda för att skapa fönstren, så att det ska bli enkelt att porta från windows till Linux.

Så vad rekomenderar Ni?
Varför göra som alla andra, när alla andra gör det????

robinr
Posts: 1662
Joined: 10 July 2002, 00:27

Post by robinr » 17 March 2004, 14:49

WxWindows, Fltk eller QT. QT är nog bäst om man ser till produktivitet och vad det kan, men kräver att ni antingen GPL:ar koden eller köper en kommersiell licens.

User avatar
e8johan
Posts: 1921
Joined: 2 December 2002, 11:13
Location: Alingsås
Contact:

Post by e8johan » 17 March 2004, 15:12

Jag skulle rekommendera Qt starkt. Det har ett mycket levande community bl.a. i form av KDE och qtforum.org samt ett antal mailinglistor.

User avatar
Mr_CHISOL
Posts: 43
Joined: 4 September 2003, 10:43
Location: Linköping
Contact:

qt låter bra

Post by Mr_CHISOL » 17 March 2004, 15:13

QT låter bra, vi fundera på att släppa programmet som OpenSource, under GPL!!!
Varför göra som alla andra, när alla andra gör det????

User avatar
panzar
Posts: 100
Joined: 23 April 2003, 22:07

Post by panzar » 17 March 2004, 20:42

robinr wrote:WxWindows, Fltk eller QT. QT är nog bäst om man ser till produktivitet och vad det kan, men kräver att ni antingen GPL:ar koden eller köper en kommersiell licens.
Hm, rätta mig om jag har fel, men det finns väl ingen GPL-version av Qt för windows?

elwis
Posts: 3135
Joined: 2 April 2002, 02:00
Location: Ulricehamn

Post by elwis » 17 March 2004, 20:54

Nä det undrar jag? Den enda version som funnits fritt för fri programmering som jag använt var en gammal 2.3. Inte altför up to date..

robinr
Posts: 1662
Joined: 10 July 2002, 00:27

Post by robinr » 17 March 2004, 21:10

Nej, så enkelt var det inte. Sorry.

Cygwin-porten av KDE använder iofs unixversionen är jag rätt övertygad om. Kanske inte så intressant för de flesta ändå eftersom cygwin och X krävs.

Om man köper en viss bok så får man med en Non-Commersial version av 3.2, se t.ex. http://dot.kde.org/1076068778 får man en.

Se också trolltech's sida om att använda NC-versionen i GPL-applikationer.

http://www.trolltech.com/download/qt/noncomm.html http://www.trolltech.com/download/qt/do ... ncomm.html

Helt enkelt är det inte...

User avatar
Jan Pihlgren
Posts: 1447
Joined: 22 April 2002, 02:00
Location: MÄRSTA
Contact:

Post by Jan Pihlgren » 18 March 2004, 06:18

panzar wrote: Hm, rätta mig om jag har fel, men det finns väl ingen GPL-version av Qt för windows?
Här finns info om Qt.
http://www.trolltech.com/download/index.html
http://www.trolltech.com/products/qt/index.html
http://www.trolltech.com/products/qt/windows.html

Jag är osäker på om hur man får Qt för MS Windows, om den måste köpas eller ej.

User avatar
e8johan
Posts: 1921
Joined: 2 December 2002, 11:13
Location: Alingsås
Contact:

Post by e8johan » 18 March 2004, 08:52

panzar wrote:
robinr wrote:WxWindows, Fltk eller QT. QT är nog bäst om man ser till produktivitet och vad det kan, men kräver att ni antingen GPL:ar koden eller köper en kommersiell licens.
Hm, rätta mig om jag har fel, men det finns väl ingen GPL-version av Qt för windows?
Jo. Kolla här: http://kde-cygwin.sourceforge.net/qt3-win32/ .

Här finns fler Qt resurser: http://www.digitalfanatics.org/projects ... ter03.html .

User avatar
Mr_CHISOL
Posts: 43
Joined: 4 September 2003, 10:43
Location: Linköping
Contact:

jo, men...

Post by Mr_CHISOL » 19 March 2004, 11:34

Har tittat runt på sidan för QT win32
Alla skärmdumbar visar ju windows program, men det verkar som man måste installera cygwin, vilket absolut inte är att föredra, samtidigt som (även om installation ska gälla windows) de kommandon som man ska använda är alla Linux-kommandon!!!

Funkar det vekligen i windows utan en massa andra program?!?!?!??
Varför göra som alla andra, när alla andra gör det????

robinr
Posts: 1662
Joined: 10 July 2002, 00:27

Post by robinr » 19 March 2004, 11:48

QT för win32 resulterar i Windowsprogram... det är väl inte så konstigt?

Blanda inte ihop det med cygwin-versionen även om API:et är (i stort sett) samma i motsvarande versioner. Win32-versionen har stöd för ActiveX vilket Unixversionen inte har. Har inte koll på de exakta skillnaderna i övrigt.

QT-(wn32)-program under Windows installeras som vilket annat program somhelst, dvs exe och ett antal dll:er. Kommer inte ihåg om man kunde länka win32-versionen statiskt.

Opera är byggt på QT och finns för Windows.

User avatar
e8johan
Posts: 1921
Joined: 2 December 2002, 11:13
Location: Alingsås
Contact:

Post by e8johan » 19 March 2004, 13:50

Den nyligen släppta Qt boken innehåller en CD med en non-commercial version av Qt 3.x för win32. Troligen kommer den att släppas fritt inom en inte allt för avlägsen framtid. Allt som krävs då är en extra klausul i licensieringen (förutsatt att du använder GPL) om att du får länka koden med just QT-NC-win32.

User avatar
Chewie
Posts: 367
Joined: 5 August 2002, 04:30
Location: Göteborg / Borås

Post by Chewie » 27 March 2004, 12:40

Jag (och jovnas) sitter och knackar en del SDL, men det kanske inte funkar så bra för dina behov.
Själva gör vi mest bara småspel.
Mycket enkelt att porta mellan plattformar (tom xbox), och inga probs att rita ut bilder mm.
Kanske inte vad du ville ha, men det kan vara värt att kolla in.
www.libsdl.org
/// Powered by Gentoo

Guest

Post by Guest » 31 March 2004, 13:35

Själv så måste jag säga att wxWindows är det bästa valet, då det fungerar på många platformar och programmen får platformens look&feel.
Samt så är licensen väldigt fri, inga problem med opensource eller kommersiella program.

wxWindows är i sig ett C++ bibliotek men det finns bindings till många andra språk, t.ex. java, python och perl.

Fast nackdelen är väll att det verkar inte finnas någon stor community, har iof inte letat men till t.ex QT behöver man inte leta :)
Men det finns rätt bra exempel i samples katalogen som medföljer källkoden till wxWindows.

Jag har nyss börjat leka med wxWindows och jag måste säga att jag gillar det hittills iaf.

User avatar
e8johan
Posts: 1921
Joined: 2 December 2002, 11:13
Location: Alingsås
Contact:

Post by e8johan » 31 March 2004, 15:28

Anonymous wrote:Jag har nyss börjat leka med wxWindows och jag måste säga att jag gillar det hittills iaf.
Hur är wxWindows med signals och slots? Personligen tycker jag att Qt's system fungerar helt klart smidigast.

Förresten, du får gärna logga in dig, det är alltid kul att veta vem man skriver till.

Pacman
Posts: 496
Joined: 13 October 2002, 13:21
Contact:

Post by Pacman » 31 March 2004, 23:14

Ett annat alternativ är ju Gtk. Det är väl LGPL så vitt jag vet och det fungerar med alla platformar. Jag har nyligen börjat med det och använder gtkmm för att få det OO. Det är riktigt underbart faktiskt, enligt mig.

User avatar
bux
Posts: 118
Joined: 31 August 2003, 09:28
Contact:

Post by bux » 31 March 2004, 23:23

Glömde logga in när jag skrev meddelandet :)
Hur är wxWindows med signals och slots? Personligen tycker jag att Qt's system fungerar helt klart smidigast.
wxWindows (eller som det tydligen heter nu, wxWidgets) är något annorlunda mot QTs signals och slots system.

wxWidgets använder sig av först ett macro i sin klass som talar om att den klassen (ett fönster eller vad man vill göra) använder sig av events. Sen så talar man om vad som ska hända (typ som connect(...)) i ett macro.

Ett mycket kort (ej testat exempel):

Code: Select all

// fil.h
#include <wx/wx.h>

// Detta är istället för int main(...), wxWidgets skapar main funktionen åt oss
class MyApp: public wxApp
{
  virtual bool OnInit();
};

class MyFrame : public wxFrame
{
private:
  DECLARE_EVENT_TABLE() // macro som talar om att vi använder events

public:
  MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
  ~MyFrame();

  void OnBtnPress(wxCommandEvent& event);

protected:
  wxButton* btnTest;
};

// fil.cpp

enum { ID_testBtn }; // skapa ID för knappen
IMPLEMENT_APP(MyApp)  // Talar om vilken class som är "main"

BEGIN_EVENT_TABLE(MyFrame, wxFrame) // deklarera event tabellen
  EVT_BUTTON(ID_testBtn, MyFrame::OnBtnPress) // lägg till event för knappen
END_EVENT_TABLE() // avsluta event tabellen

// Programmets main funktion
bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame("Hej hej", wxPoint(50,50), wxSize(450,340));
  frame->Show(TRUE);
  SetTopWindow(frame);
  return TRUE;
} 

MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
  : wxFrame((wxFrame*)NULL, -1, title, pos, size)
{
  // skapa knappen med rätt ID med texten Hit me
  btnTest = new wxButton(this, ID_testBtn, "Hit me");
}

MyFrame::~MyFrame()
{
  // rensa upp
  delete btnTest;
}

void MyFrame::OnBtnPress(wxCommandEvent& WXUNUSED(event))
{
  Close(); // vi stänger fönstret på denna knapp
}
Kompilera det med t.ex:

Code: Select all

g++ source.cpp -o test `wx-config --cxxflags --libs`
Som du ser så använder man sig av en s.k "event table", i början känns det lite myko att använda det men sen tycker (iaf jag) man att den är skön.
Det finns möjlighet att använda slot/signal liknande funktioner också men det har jag inte gett mig in på (inte med wxWidgets), eftersom jag vart tillsagd att event tabellerna är effektivare samt att man kan om man vill ändra i tabellerna under runtime vilket man inte kan med slot/signal funktionerna.

Hoppas att jag inte var alltför otydlig :)
"Trying is the first step towards failure" -- Homer Simpson

User avatar
e8johan
Posts: 1921
Joined: 2 December 2002, 11:13
Location: Alingsås
Contact:

Post by e8johan » 1 April 2004, 07:53

Pacman wrote:Ett annat alternativ är ju Gtk. Det är väl LGPL så vitt jag vet och det fungerar med alla platformar. Jag har nyligen börjat med det och använder gtkmm för att få det OO. Det är riktigt underbart faktiskt, enligt mig.
Jag tycker att gtkmm känns lite som en skolövning. Massor av templates och tjaffs. Qt's system känns mer pragmatiskt, enl. mig.

User avatar
Raniz
Posts: 221
Joined: 25 April 2003, 09:02
Location: Horn
Contact:

Post by Raniz » 15 April 2004, 11:51

Jag började med QT för två veckor sedan (köpte QT-boken då) och jag kan redan säga att jag ser min framtid innehållandes QT :)
#312470 @ http://counter.li.org/
<Snorlander> eller va fan kan ju lika gärna köra...
<Snorlander> =) sätter igång nu... kanske ringer om det strular

Matte om att köra Linux :)

User avatar
e8johan
Posts: 1921
Joined: 2 December 2002, 11:13
Location: Alingsås
Contact:

Post by e8johan » 15 April 2004, 12:00

Raniz wrote:Jag började med QT för två veckor sedan (köpte QT-boken då) och jag kan redan säga att jag ser min framtid innehållandes QT :)
Jag antar att du redan kollat på http://www.digitalfanatics.org/projects ... index.html , sedan finns ju även http://www.qtforum.org .

User avatar
Raniz
Posts: 221
Joined: 25 April 2003, 09:02
Location: Horn
Contact:

Post by Raniz » 15 April 2004, 12:15

e8johan wrote:
Raniz wrote:Jag började med QT för två veckor sedan (köpte QT-boken då) och jag kan redan säga att jag ser min framtid innehållandes QT :)
Jag antar att du redan kollat på http://www.digitalfanatics.org/projects ... index.html
Faktiskt inte, ska ta mig en ordentlig titt på den där!
e8johan wrote: , sedan finns ju även http://www.qtforum.org .
#312470 @ http://counter.li.org/
<Snorlander> eller va fan kan ju lika gärna köra...
<Snorlander> =) sätter igång nu... kanske ringer om det strular

Matte om att köra Linux :)

Post Reply