QT Creator - podstawy

Odpowiedz Nowy wątek
2015-01-24 14:03
Ashur
0

Witam. Przerzuciłem się dzisiaj na qt creator i mam 2 pytania.
1 - Stworzyłem projekt a w nim 2 okienka, jedno odpowiada za logowanie, drugie za wyświetlanie menu. Jeśli ktoś wpiszę dane w okienku z logowaniem to to okienko się zamyka a otwiera się menu. Problem w tym że chciałbym skopiować dane wpisane w pierwszym okienku i wyświetlić je jako label w drugim. Niestety nie mam pojęcia jak to zrobić.
2 - Czy da się usunąć windowsowe obramowanie programu tzn. to:
http://scr.hu/3dxp/e750l
plus te boczne paski lub chociaż jak usunąć z tego przycisk minimalizowania, rozszerzania okna, zmniejszania okna ?
Pliki Launcher to okno z menu, mainwindow to logowanie.
Nie ogarniam jeszcze za bardzo tego qt więc proszę o wszelkie rady, co robię nieprawidłowo i odpowiedzi na te pytania.
Oto kod:

// Plik Main.cpp
#include "mainwindow.h"
#include "launcher.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    Launcher l;
    w.show();

    return a.exec();
}
// Plik MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "launcher.h"
#include "ui_launcher.h"

#include <qmessagebox.h>
#include <QApplication>

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

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

void MainWindow::on_Login_Button_clicked()
{
    if (ui->Login_Form->text().trimmed().isEmpty() || ui->Password_Form->text().trimmed().isEmpty())
    {
        QMessageBox::warning(this, tr("Error"), tr("Login or password not found"));
    }
    else
    {
        MainWindow::close();
        Launcher *l = new Launcher(this);

        username = ui->Login_Form->text();
        l->show();
    }
}
// Plik MainWindow.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);
    QString username;
    ~MainWindow();

private slots:
    void on_Login_Button_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
// Plik Launcher.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "launcher.h"
#include "ui_launcher.h"
#include <qmessagebox.h>

Launcher::Launcher(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Launcher)
{
    ui->setupUi(this);
}
Launcher::~Launcher()
{
    delete ui;
}
// Plik Launcher.h
#ifndef LAUNCHER_H
#define LAUNCHER_H

#include <QMainWindow>

namespace Ui {
class Launcher;
}

class Launcher : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::Launcher *ui;
};

#endif // LAUNCHER_H

Pozostało 580 znaków

2015-01-24 15:54
0

utwórz QDialog w slocie push_buttona w main window, w implementacji QDialog napisz sygnał, który połączysz ze slotem mainwindow (tutaj podasz dane), na końcu zamknij QDialog

przykładowy kod:
start QDialog:

void MainWindow::on_openSendingDialog_clicked()
{
    SendMessageDialog dialog(this); // tutaj podajesz wskaźnik do MainWindow, dzięki czemu będziesz mógł napisać connect dla przekazania danych.
    dialog.exec();
}

w construktorze SendMessageDialog (który dizedziczy po QDialog) robisz connect

QObject::connect(this, SIGNAL(verifyLogin(QString)),
            parent, SLOT(verifyLoginData(QString))); // lub jest nowa wersja pisania connectów (nie chce mi się szukać), 
                                                                                // parent to wskaźnik do MainWindow (zamaist QString podaj jakąś strukturę, będziesz musiał zarejestrować ten typ aby connect działał)

po wypełnieniu danych w SendMessageDialog klikasz push_button log in

void SendMessageDialog::on_logInPushButton_clicked()
{
        CustomData data;
        // tutaj pobierasz dane wprowadzone przez użytkownika i wysyłasz je poprzez sygnał do MW
    emit verifyLogin(data);

    this->done(1); // zamykasz QDialog
}

chyba niczego nie pominąłem

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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