crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как на QT запустить функцию при запуске программы?, Не совсем понимаю сигналы/слоты
tintix
  опции профиля:
сообщение 4.12.2007, 17:46
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 4.12.2007
Пользователь №: 32

Спасибо сказали: 0 раз(а)




Репутация:   0  


В 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
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


В Qt можно соединить слот со слотом, сделай что-то вроде этого:
a.connect( this, SLOT(show()), this, SLOT( smb_conf()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Swappp
  опции профиля:
сообщение 4.12.2007, 20:12
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 20
Регистрация: 26.11.2007
Пользователь №: 25

Спасибо сказали: 1 раз(а)




Репутация:   1  


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

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

Что есть "сразу после запуска программы"?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 4.12.2007, 21:42
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Swappp @ 4.12.2007, 20:12) *
Вроде можно соединять сигнал с сигналом. А слот с слотом... Слот же выполняется, а не генерируется каким-нибудь объектом.
Хм, посмотрел и правда описывается, что только сигнал с сигналом и сигнал со слотом, но где-то я видел, что можно слот со слотом соединять, если конечно же не перепутал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 4.12.2007, 22:07
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


По твоему вопросу думаю должен помочь QShowEvent, хотя может быть есть и решение попроще.
Попробую сварганить пример...

Сообщение отредактировал ViGOur - 4.12.2007, 22:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 5.12.2007, 10:14
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


А что мешает вызывать smb_conf() прямо из конструктора диалога?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 5.12.2007, 10:55
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(QCasper @ 5.12.2007, 10:14) *
А что мешает вызывать smb_conf() прямо из конструктора диалога?
Наверное в этом методе он передает или получает данные с диалога. Не просто же так он не использует конструктор.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 5.12.2007, 11:33
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


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


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.4.2021, 20:43