Russian Qt Forum

Qt => Вопросы новичков => Тема начата: serg_yl от Февраль 04, 2011, 21:51



Название: Как открыть, загрузить и построить...
Отправлено: serg_yl от Февраль 04, 2011, 21:51
Пору вопросов начинающего.
1. Как вызвать окно открытия файла?
2. Как загрузить переменную из текстового файла в Label?
3. Требуется изобразить график функции, графики прямых, ограничивающих область интегрирования, оси координат. Как это сделать?


Название: Re: Как открыть, загрузить и построить...
Отправлено: Пантер от Февраль 04, 2011, 23:13
QFileDialog


Название: Re: Как открыть, загрузить и построить...
Отправлено: alexman от Февраль 04, 2011, 23:21
Цитировать
1. Как вызвать окно открытия файла?
Код:
QString QFileDialog::getOpenFileName ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 ) [static]

Цитировать
2. Как загрузить переменную из текстового файла в Label?
Код:
QFile, QTextStream, void QLabel::setText( const QString& text )

Цитировать
3. Требуется изобразить график функции, графики прямых, ограничивающих область интегрирования, оси координат. Как это сделать?
qwt


Название: Re: Как открыть, загрузить и построить...
Отправлено: serg_yl от Февраль 15, 2011, 13:15
Не работает слот, а программа комп. нормально без ошибок.

Консоль приложения:
Запускается C:\Qt\Lessons\TRPO-build-desktop\debug\TRPO.exe...
Object::connect: No such slot TRPO::quit() in ..\TRPO\trpo.cpp:32
C:\Qt\Lessons\TRPO-build-desktop\debug\TRPO.exe завершился с кодом 0

В файле trpo.cpp:
Код:
TRPO::TRPO(QWidget *parent)
    : QWidget(parent)
{
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));

    QPushButton *b_open = new QPushButton ("Открыть...");
    QPushButton *b_rachet = new QPushButton ("Рассчитать");
    QPushButton *close_wid = new QPushButton ("Закрыть");
    QHBoxLayout* phbxLayout = new QHBoxLayout;
    phbxLayout->setMargin(10);
    phbxLayout->setSpacing(20);
    phbxLayout->addWidget(b_open,0,Qt::AlignBottom);
    phbxLayout->addWidget(b_rachet,0,Qt::AlignBottom);
    phbxLayout->addWidget(close_wid,0,Qt::AlignBottom);
    setLayout(phbxLayout);
    connect(close_wid, SIGNAL(clicked ()), SLOT(quit()));
}

Помогите разобраться, что еще я упустил?


Название: Re: Как открыть, загрузить и построить...
Отправлено: Blackwanderer от Февраль 15, 2011, 13:55
Помогите разобраться, что еще я упустил?

Не указали, чей слот нужно вызывать.

connect(close_wid, SIGNAL(clicked ()), приемник сигнала ,SLOT(quit()));


Название: Re: Как открыть, загрузить и построить...
Отправлено: serg_yl от Февраль 15, 2011, 14:05
Когда я пишу приемник слота:
Код:
connect(close_wid, SIGNAL(clicked ()), app, SLOT(quit()));

Снова ошибка:
'app' was not declared in this scope


main.cpp
Код:
#include <QtGui/QApplication>
#include "trpo.h"
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    TRPO w;

    w.setWindowFlags(Qt::Window|Qt::WindowMinimizeButtonHint);
    w.setWindowTitle("Tiles");
    w.resize(800,400);

    w.show();

    return app.exec();
}



Название: Re: Как открыть, загрузить и построить...
Отправлено: Archa4 от Февраль 15, 2011, 14:26
Попробуй эту строку с Connect кинуть куда-нить в main.cpp
Просто из Widget'a он не видит этот app, а из main widget будет виден... Попробый эту строчку кинуть сразу за
TRPO w;
Только строчка будет по другому выглядеть:
connect("что тут написать - без понятия", SIGNAL(clicked ()), this, SLOT(quit()));

Если бы ты создавал так: TRPO *w = new TRPO;
тогда надо было бы указать
w->close_wid (возможно)


Название: Re: Как открыть, загрузить и построить...
Отправлено: Fat-Zer от Февраль 15, 2011, 14:38
ещё есть qApp.


Название: Re: Как открыть, загрузить и построить...
Отправлено: serg_yl от Февраль 15, 2011, 14:44
Странно а из main.cpp он теперь не видит close_wid.

'close_wid' was not declared in this scope
invalid use of' this in non-member function



Fat-Zer, qApp что это?


Название: Re: Как открыть, загрузить и построить...
Отправлено: shirushizo от Февраль 15, 2011, 21:07
Глобальный указатель на объект класса приложения (или макрос позволяющий его получить, тонкостей не помню)

connect(close_wid, SIGNAL(clicked ()), qApp, SLOT(quit())); в trpo.cpp


Название: Re: Как открыть, загрузить и построить...
Отправлено: serg_yl от Февраль 16, 2011, 07:59
shirushizo - thanks!!! :D Все заработало!


Название: Re: Как открыть, загрузить и построить...
Отправлено: serg_yl от Февраль 16, 2011, 14:51
Как можно в стандартный виджет (уже настроенный интерфес в компановке
Код:
pvbxLayout->addLayout(phbxLayout);
) вставить виджет двумерного графика - QwtPlot?