Sök…


Anmärkningar

Som officiell dokumentation angav, är Qt ett plattformsapplikationsutvecklingsram för stationära, inbäddade och mobila. Plattformar som stöds inkluderar Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS och andra.

Det här avsnittet ger en översikt över vad Qt är, och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom Qt och länka till relaterade ämnen. Eftersom dokumentationen för qt är ny kan du behöva skapa initialversioner av relaterade ämnen.

versioner

Version Utgivningsdatum
Qt 3.0 2001/10/16
Qt 3.3 2004-02-05
Qt 4.1 2005-12-20
Qt 4,8 2011-12-15
Qt 5,0 2012/12/19
Qt 5.6 2016/03/16
Qt 5,7 2016/06/16
Qt 5,8 2017/01/23
Qt 5,9 2017/05/31

Installation och installation på Windows och Linux

Ladda ner Qt för Linux Open Source-version

Gå till https://www.qt.io/download-open-source/ och klicka på Ladda ner nu, se till att du laddar ner Qt-installationsprogrammet för Linux.

Qt Linux öppen källkod nedladdningssida

En fil med namnet qt-unified-linux-x-online.run laddas ner och lägg sedan till exec-behörighet

chmod +x qt-unified-linux-x-online.run

Kom ihåg att ändra 'x' för den aktuella versionen av installationsprogrammet. Kör sedan installationsprogrammet

./qt-unified-linux-x-online.run

Ladda ner Qt för Windows Open Source-version

Gå till https://www.qt.io/download-open-source/ . Följande skärmdump visar nedladdningssidan på Windows:

Qt Windows nedladdningssida för öppen källkod

Vad du ska göra nu beror på vilken IDE du ska använda. Om du ska använda Qt Creator, som ingår i installationsprogrammet, klickar du bara på Ladda ner nu och kör den körbara.

Om du ska använda Qt i Visual Studio, bör knappen Ladda ner nu normalt också fungera. Se till att den nedladdade filen kallas qt-opensource-windows-x86-msvc2015_64-xxxexe eller qt-opensource-windows-x86-msvc2015_32-xxxexe (där xxx är versionen av Qt, till exempel 5.7.0). Om det inte är fallet, klicka på Visa alla nedladdningar och välj ett av de första fyra alternativen under Windows Host.

Om du ska använda Qt i Code :: Blocks, klicka på Visa alla nedladdningar och välj Qt xxx för Windows 32-bitars (MinGW xxx, 1,2 GB) under Windows Host.

När du har laddat ner lämplig installationsfil, kör den körbara och följ instruktionerna nedan. Observera att du måste vara administratör för att installera Qt. Om du inte är administratör kan du hitta flera alternativa lösningar här .

Installera Qt i alla operativa system

När du har laddat ner Qt och öppnat installationsprogrammet är installationsproceduren densamma för alla operativa system, även om skärmdumparna kan se lite annorlunda ut. Skärmdumparna som tillhandahålls här är från Linux.

Logga in med ett befintligt Qt-konto eller skapa ett nytt:

Qt-installationsprogram

Välj en sökväg för att installera Qt-bibliotek och verktyg

installationsväg

Välj bibliotekversion och de funktioner du vill ha

Qt-egenskaper

Efter nedladdningen och installationen är klar går du till Qt-installationskatalogen och startar Qt Creator eller kör den direkt från kommandoraden.

ange bildbeskrivning här

Hej världen

I det här exemplet skapar och visar vi helt enkelt en tryckknapp i en fönsterram på skrivbordet. Tryckknappen kommer att ha etiketten Hello world!

Detta representerar det enklaste möjliga Qt-programmet.

Först av allt behöver vi en projektfil:

helloworld.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = helloworld
TEMPLATE = app

SOURCES += main.cpp
  • QT används för att indikera vilka bibliotek (Qt-moduler) som används i detta projekt. Eftersom vår första app är en liten GUI kommer vi att behöva QtCore och QtGui. Eftersom Qt5 separerar QtWidgets från QtGui, behöver vi lägga till greaterThan linje för att kompilera den med Qt5.
  • TARGET är namnet på appen eller biblioteket.
  • TEMPLATE beskriver typen som ska byggas. Det kan vara en applikation (app), ett bibliotek (lib) eller helt enkelt underkataloger (underkataloger).
  • SOURCES är en lista över källkodfiler som ska användas vid byggandet av projektet.

Vi behöver också main.cpp som innehåller en Qt-applikation:

main.cpp

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QPushButton button ("Hello world!");
    button.show();

    return a.exec(); // .exec starts QApplication and related GUI, this line starts 'event loop'    
}
  • QApplication-objekt. Detta objekt hanterar resurser över hela applikationen och är nödvändigt för att köra alla Qt-program som har ett GUI. Den behöver argv och args eftersom Qt accepterar några få kommandoradsargument. När du ringer a.exec() Qt-händelsslingan.
  • QPushButton-objekt. Tryckknappen med etiketten Hello world! . Nästa rad, button.show() , visar tryckknappen på skärmen i sin egen fönsterram.

Slutligen, för att köra applikationen, öppnar du en kommandotolk och anger katalogen där du har programmets .cpp-fil. Skriv in följande skalkommandon för att bygga programmet.

qmake -project
qmake
make

Grundläggande applikation med QtCreator och QtDesigner

QtCreator är för tillfället det bästa verktyget för att skapa en Qt-applikation. I det här exemplet ser vi hur man skapar en enkel Qt-applikation som hanterar en knapp och skriver text.

För att skapa en ny applikation klicka på Arkiv-> Ny fil eller projekt:

ange bildbeskrivning här

Välj sedan Projects-> Application-> Qt Widgets-applikationen

ange bildbeskrivning här

Sedan kan du välja namn och sökväg för ditt projekt:

ange bildbeskrivning här

Därefter kan du välja vilka satser du ska använda. Om du inte har något kit skapar QtCreator ett kit med din Qt-version och datorns huvudkompilerare. Om du inte har någon kompilator kan du installera en. I Windows: installera Visual Studio. På Linux / Mac: installera g ++ eller clang ++.

ange bildbeskrivning här

Sedan kan du välja namnet på din huvudfönsterklass, den ärvda klassen, namnet på filen som motsvarar din huvudfönsterklass. Om du lär dig eller testar Qt behöver du inte ändra dem riktigt.

ange bildbeskrivning här

Det sista steget kan vara att välja ett delprojekt av detta projekt och lägga till en versionskontroll som git och svn. Återigen, om det bara är för tester, behöver du inte ändra dem.

ange bildbeskrivning här

Klicka sedan på Finish-knappen. Nu borde du vara här:

ange bildbeskrivning här

Detta är basen i din ansökan. om du kör det nu genom att klicka på Build-> Run eller ctrl + R (som standard) ser du ett tomt fönster.

Nu lägger vi till en text och en knapp. för att göra det kommer vi att använda Qt Designer. Dubbelklicka på mainwindow.ui Så nu ska du se: (om inte och du ser en del xml-fil, klicka på Design-knappen till vänster)

ange bildbeskrivning här

Här Qt Designer! Verkar ganska komplicerat. Men när du väl är van vid det är det riktigt bra. Vi lägger till lite text och en knapp. Till vänster finns listan över artiklarna. Du kan klicka på en och dra och släppa objekten. Klicka på tryckknappen och släpp den i fönstret. Sök sedan på etiketten och gör samma sak (du har ett filter längst upp till vänster där du kan skriva objektet du letar efter).

Du borde ha något som det här nu:

ange bildbeskrivning här

Genom att dubbelklicka på objektet kan du ändra texten på dem. Eller så kan du se längst ner till höger egenskaperna för objektet du är nu och hitta textegenskapen. Här kan du också ändra namnet.

Om du nu sparar och kör (bättre klicka på redigeringsknappen och sedan spara igen för att vara säker på att dina ändringar har sparats) får du:

ange bildbeskrivning här

Huh? Varför min etikett och knapp är så när jag kör? Det beror på att det inte finns någon layout i vårt centrala objekt. Förresten, om du ändrar storlek på huvudfönstret kan du se att objektet behåller sin plats. Så för att fixa det lägger vi till en layout. Låt oss säga en vertikal layout. Så dra och släpp en vertikal layout från objektlistan till vänster. Nu ska du se:

ange bildbeskrivning här

En flytande layout.

Så högerklicka nu på huvudfönstret, var som helst utom på etiketten och knappen. c \ Klicka på Layout-> Layout vertikalt. Nu ska du se att dina objekt är vertikalt justerade i ditt fönster. Så nu Flytta (med dra och släpp igen) din etikett och knapp i layouten. nu borde du få:

ange bildbeskrivning här

I din designer. Och om du kör din ansökan:

ange bildbeskrivning här

Här kan du se din applikation med etiketten och knappen. Och om du ändrar storleken på ditt fönster ändras storleken på etiketten och knappen.

Men vår knapp gör fortfarande ingenting. Vi kan ändra det på två olika sätt. Den första är att ansluta knappen till en metod vi skapade. Vi kan göra det med metodnamnet connect. Så låt oss gå tillbaka till vår kod och gå till mainwindow.cpp nu lägg till:

connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(whenButtonIsClicked()));

I konstruktorn för din MainWindow EFTER ui->setupUI(this); som initialiserar ui.

Sedan kan vi skapa MainWindow :: WhenButtonIsClicked () i vår .cpp-klass som kan ändra texten på etiketten så:

void MainWindow::whenButtonIsClicked()
{
    ui->label->setText("the button has been clicked !");
}

Och i vår mainwindow.h måste vi lägga till:

public slots:
    void whenButtonIsClicked();

Offentliga slots betyder att denna metod kan ringas när en signal tas emot. anslut länka signalen när vi klickar på knappen och en metod för att ringa.

Så nu om vi kör vår applikation och klickar på knappen får vi:

ange bildbeskrivning här

Vilket innebär att vår anslutning fungerar. Men med Qt Designer har vi ett ännu enklare sätt att göra det. Om du vill göra det andra sättet, ta bort anslutningen för att koppla bort knappen (eftersom vi kommer att ansluta den annorlunda), gå tillbaka till mainwindow.ui och högerklicka på knappen. Klicka på Gå till plats ..., välj klickat () och tryck på ok.

ange bildbeskrivning här

Då ska du flyttas till den här funktionen:

void MainWindow::on_pushButton_clicked()
{
}

Detta är den funktion som kommer att anropas när du klickar på knappen. Så du kan lägga till

ui->label->setText("it's even easier !");

Gillar det. Gå till mainwindow.h för att spara förändringen (när du går till slot, skapar det en metod kopplad till signalen du bad om. Den definierar funktionen i .h men sparar inte den. Så du borde gå till filen och spara den).

Och nu när du kör din applikation och trycker på knappen kan du se det nya meddelandet (om du fortfarande ser det gamla är att du inte tar bort anslutningen).

ange bildbeskrivning här

Vi kan också lägga till en int, dubbel osv i vår etikett tack vare QVariant som är en fantastisk klass som kan konvertera många saker i många andra saker. Så vänster lägg till en int som ökar när vi trycker på knappen.

Så .h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public slots:
    void whenButtonIsClicked();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow  *ui;
    double          _smallCounter;
};

#endif // MAINWINDOW_H

.Cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
//    connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(whenButtonIsClicked()));
    _smallCounter = 0.0f;
}

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

void MainWindow::whenButtonIsClicked()
{
    ui->label->setText("the button has been clicked !");
}

void MainWindow::on_pushButton_clicked()
{
    _smallCounter += 0.5f;
    ui->label->setText("it's even easier ! " + QVariant(_smallCounter).toString());
}

Och nu kan vi spara och springa igen. Varje gång du klickar på knappen visar den "det är ännu enklare!" Med värdet på _smallCounter. Så du borde ha något som:

ange bildbeskrivning här

Denna handledning är klar. Om du vill lära dig mer om Qt, låt oss se de andra exemplen och dokumentationen på Qt på StackOverflow-dokumentationen eller Qt-dokumentationen



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow