[QT Creator] Uruchomienie górnego menu - sloty,

Odpowiedz Nowy wątek
sdsgfgsaf
2009-11-08 10:06
sdsgfgsaf
0

Utworzyłem projekt "QT4 Gui Application". Jeszcze nie zmieniałem plików .cpp i .h. W pliku mainwindow.ui utworzyłem okno główne programu (z górnym menu). Co mam teraz zrobić, aby np. po kliknięciu Plik -> zakończ, program się wyłączał?

main.cpp:

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp:

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

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

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

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;

private slots:
};

#endif // MAINWINDOW_H

Pozostało 580 znaków

2009-11-08 10:14

Rejestracja: 13 lat temu

Ostatnio: 10 lat temu

0

Łączysz akcję (pozycja w menu) z własną funkcją np. zamknijMnie()..

connect(ui->actionZakoncz,SIGNAL(triggered()),this,SLOT(zamknijMnie()));

Pozostało 580 znaków

sdsgfgsaf
2009-11-08 10:59
sdsgfgsaf
0

Dzięki ;)
Dodałem:

    connect(ui->action_exit,SIGNAL(triggered()),qApp,SLOT(quit()));

Do mainwindow.cpp (do funkcji MainWindow::MainWindow).

Teraz mam takie coś:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->action_exit,SIGNAL(triggered()),qApp,SLOT(quit()));
    connect(ui->action_about,SIGNAL(triggered()),this,SLOT(about()));
}

...

void MainWindow::about()
{
       QMessageBox::about(this,tr("ąśćĄŚĆŁżł"),
            tr("ąśćłźżĄŚĆŁŻ"));
}

Niestety po kliknięciu w "O programie" zamiast polskich znaków są krzaki. Co zrobić, aby to działało?

I 2 pytanie:
Utworzyłem pliki form_configure.ui, form_confiure.h i form_configure.cpp. Po kliknięciu na Konfiguracja->Konfiguruj ma się pokazać nowe okno. Jak to zrobić (funkcja pokazująca okno)?

Pozostało 580 znaków

2009-11-08 11:03

Rejestracja: 12 lat temu

Ostatnio: 7 godzin temu

0

a czy zdefiniowałeś about jako slot?
Czyli jak wygląda plik nagłówkowy MainWindow?


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

sdsgfgsaf
2009-11-08 11:47
sdsgfgsaf
0
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;

private slots:
    void about();
};

#endif // MAINWINDOW_H

Pozostało 580 znaków

vecco_off
2009-11-08 13:41
vecco_off
0

Polskie znaki..
http://vecco.jogger.pl/2009/10/29/qstring-utf-8/

Pozostało 580 znaków

sdsgfgsaf
2009-11-08 13:50
sdsgfgsaf
0
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <QTextCodec>
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->action_exit,SIGNAL(triggered()),qApp,SLOT(quit()));
    connect(ui->action_about,SIGNAL(triggered()),this,SLOT(about()));
}

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

void MainWindow::about()
{
       QMessageBox::about(this,"O programie E-Cooking",
            "E-Cooking jest bazą liczącą ponad 1500 przepisów. Można dodawać przepisy do ulubionych. Baza przepisów jest często aktualizowana, więc ich liczba wzrasta.<br /><br /><h3>Wersja</h3>1.0.0");
}

mainwindow.cpp:5: error: expected constructor, destructor, or type conversion before '(' token

Co jest źle?

Pozostało 580 znaków

vecco_off
2009-11-08 13:53
vecco_off
0

Musisz to umieścić wewnątrz jakiejś funkcji..
Np. w kontruktorze MainWindow..
Pamietaj zeby pozniej nie uzywac tr() tam gdzie mogą być pl znaki.

Pozostało 580 znaków

sdsgfgsaf
2009-11-08 14:01
sdsgfgsaf
0
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <QTextCodec>

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    ui->setupUi(this);
    connect(ui->action_exit,SIGNAL(triggered()),qApp,SLOT(quit()));
    connect(ui->action_about,SIGNAL(triggered()),this,SLOT(about()));
}

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

void MainWindow::about()
{
    QMessageBox::about(this,"ąśćłĄŚĆŁ","ąśćłĄŚĆŁ");
}

Nie ma błędów przy kompilacji, ale nadal nie wyświetlają się pl znaki (biały znak zapytania na czarnym rombie).

Pozostało 580 znaków

vecco_off
2009-11-08 14:25
vecco_off
0

a zamień te linijki

    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    ui->setupUi(this);

Pozostało 580 znaków

sdsgfgsaf
2009-11-08 14:31
sdsgfgsaf
0

Nadal jest źle.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0