Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Как на QT запустить функцию при запуске программы?

Автор: tintix 4.12.2007, 17:46

В QT я новичок. Версия QT - 4.3, на пингвине. Прога состоит из main.cpp, share.h, share.cpp. Как мне автоматически выполнить функцию smb_conf() сразу после запуска программы? Какой обьект с каким сигналом соиденять? Раньше на Delphi это было просто - у формы выбирал OnActivate и вставлял функцию...


main.cpp

#include <QApplication>
#include "share.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    share *dialog = new share;

    dialog->show();
    return app.exec();
}



share.h
#ifndef SHARE_H
#define SHARE_H

#include "ui_share.h"


class share : public QDialog, private Ui::dialogs
{
    Q_OBJECT

public:
    share(QDialog *parent = 0);

public slots:
    void getPath();
    void smb_conf();
};

#endif



share.cpp
#include <QtGui>
#include "share.h"

share::share(QDialog *parent)
{
    setupUi(this);
    
    connect( pushButton_2, SIGNAL( clicked() ), this, SLOT( getPath() ) );
}

void share::getPath() {
    QString path;
    
    path = QFileDialog::getExistingDirectory(
        this,
        "Choose a folder",
    QDir::currentPath()
    );

lineEdit_3->setText( path );
    
}


void share::smb_conf () {
        
    int unsigned i = 0, linecounter = 0;
    QString tx;

    QString name[30];
    QFile fa ("/home/tintix/Desktop/smb.conf");

        ---------//Что-то происходит//--------------
      
        lineEdit->setText(name[0]);
}

Автор: ViGOur 4.12.2007, 18:18

В Qt можно соединить слот со слотом, сделай что-то вроде этого:

a.connect( this, SLOT(show()), this, SLOT( smb_conf()));

Автор: Swappp 4.12.2007, 20:12

Цитата(ViGOur @ 4.12.2007, 18:18) *
В Qt можно соединить слот со слотом, сделай что-то вроде этого:
a.connect( this, SLOT(show()), this, SLOT( smb_conf()));

Вроде можно соединять сигнал с сигналом. А слот с слотом... Слот же выполняется, а не генерируется каким-нибудь объектом.
Цитата
Как мне автоматически выполнить функцию smb_conf() сразу после запуска программы?

Что есть "сразу после запуска программы"?

Автор: ViGOur 4.12.2007, 21:42

Цитата(Swappp @ 4.12.2007, 20:12) *
Вроде можно соединять сигнал с сигналом. А слот с слотом... Слот же выполняется, а не генерируется каким-нибудь объектом.
Хм, посмотрел и правда описывается, что только сигнал с сигналом и сигнал со слотом, но где-то я видел, что можно слот со слотом соединять, если конечно же не перепутал.

Автор: ViGOur 4.12.2007, 22:07

По твоему вопросу думаю должен помочь http://www.crossplatform.ru/documentation/qtdoc4.3/qshowevent.php, хотя может быть есть и решение попроще.
Попробую сварганить пример...

Автор: QCasper 5.12.2007, 10:14

А что мешает вызывать smb_conf() прямо из конструктора диалога?

Автор: ViGOur 5.12.2007, 10:55

Цитата(QCasper @ 5.12.2007, 10:14) *
А что мешает вызывать smb_conf() прямо из конструктора диалога?
Наверное в этом методе он передает или получает данные с диалога. Не просто же так он не использует конструктор.

Автор: QCasper 5.12.2007, 11:33

Цитата(ViGOur @ 5.12.2007, 10:55) *
Цитата(QCasper @ 5.12.2007, 10:14) *
А что мешает вызывать smb_conf() прямо из конструктора диалога?
Наверное в этом методе он передает или получает данные с диалога. Не просто же так он не использует конструктор.


Почему "наверное", он код привел этой функции, что там гадать. И там всего-то устанавливается какое-то значение для lineEdit, а этого в конструкторе никто не запрещает делать. Проблемы с вызовом функции в конструкторе в основном появляются когда Вам надо знать в ней размеры окна, или каким-то образом повлиять на них. Здесь я ничего подобного не вижу, а стало быть и проблемы тоже не вижу.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)