Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Zeka13 от Март 11, 2012, 11:31



Название: QFileDialog если файл не выбран[РЕШЕНО]
Отправлено: Zeka13 от Март 11, 2012, 11:31
Заранее спасибо за внимание!
Никак не могу разобраться, как полностью закрыть окно, если в созданном в нём диалоге выбора файла, файл окажется не выбран!
Смог только вот что родить:
Код:
QString str = QFileDialog::getOpenFileName(0, "Open Dialog", "", "*.plot");
if(!str.isEmpty())
      //close();


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 11, 2012, 12:59
Код
C++ (Qt)
QString str = QFileDialog::getOpenFileName(0, "Open Dialog", "", "*.plot");
if(str.isEmpty())
     close(); // или qApp->quit()


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 13:24
 close(); точно не работает почему-то
qApp чем является?


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 13:46
close(); точно не работает почему-то
qApp чем является?

qApp - объект QAppliaction. В этом случае его использовать не стоит, qApp->quit() грохнет приложение
Чтобы закрыть диалог, можно вызвать reject(), будет равносильно нажатию пользователем кнопки Отмена
Или же accept(), тогда результатом работы диалога будет Accepted
Или done(int), в который любой код можно положить


Название: Re: QFileDialog если файл не выбран
Отправлено: GreatSnake от Март 11, 2012, 13:50
Zeka13:
а как ты можешь вообще не выбрать файл и выйти из QFileDialog::getOpenFileName() ???

kambala, sudo:
ТС использует статический метод и не имеет указателя на диалог. Про какой close() и reject() может идти речь ???


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 14:08
kambala, sudo:
ТС использует статический метод и не имеет указателя на диалог. Про какой close() и reject() может идти речь ???

Я так понял, у него открыт диалог, поверх которого открывается QFileDialog. Вот тот самый диалог и надо грохнуть


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 14:18
Цитировать
а как ты можешь вообще не выбрать файл и выйти из QFileDialog::getOpenFileName()

нажать отмена я могу в диалоге выбора файла.

Мне нужно закрыть форму, из которой я вызвал диалог!


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 14:20
нажать отмена я могу в диалоге выбора файла.

Мне нужно закрыть форму, из которой я вызвал диалог!

Форма в каком виде? Это диалог, отдельно висящий виджет, MainWindow, виджет с родителем?


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 14:35
QMainWindow


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 14:36
QMainWindow

Т.е если я правильно понимаю, если не выбран файл, нужно грохнуть приложение?
Тогда qApp->quit()


Название: Re: QFileDialog если файл не выбран
Отправлено: GreatSnake от Март 11, 2012, 14:44
Мне нужно закрыть форму, из которой я вызвал диалог!
Причём здесь тогда вообще QFileDialog ???
Постановка вопроса просто убийственная.


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 14:54
Ы. А close() будет работать, если добавить вот такую строчку в main

Код
C++ (Qt)
app.setQuitOnLastWindowClosed(true);
 

где app - объект QApplication. Если, конечно, не будут открыты другие окна приложения в этот момент


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 16:35
Ещё раз
есть главное окно(A), из него открыть можно другое окно(B), в это другом окне(B) создаётся диалог выбора файла и если файл не выбран, то должно закрыться окно B


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 17:11
Тогда на второй круг идём :D
Если диалог, то accept/reject, если виджет, то close должен работать


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 17:30
../plot2.8/plot.cpp:50:16: ошибка: нет декларации «accept» в этой области видимости


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 17:40
Значит, всё-таки не диалог, а виджет. Вообще, мы тут можем долго гадать, поэтому в идеале посмотреть бы код хедера и реализации (не целиком, только то, что относится к делу)


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 11, 2012, 17:42
от кого наследуется окно В?


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 17:58
Цитировать
Значит, всё-таки не диалог, а виджет. Вообще, мы тут можем долго гадать, поэтому в идеале посмотреть бы код хедера и реализации (не целиком, только то, что относится к делу)

я же написал, что это QMainWindow

Цитировать
от кого наследуется окно В?

меня так научили делать, в окне A кнопка, к ней слот void showPlot();

окноA.cpp
void MainWindow::showPlot()
{
    Plot *bufka2 = new Plot;
    bufka2->show();
}

окно B.cpp
Код:
Plot::Plot(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Plot)
{
.......................

    //открытие файла

    QString str = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", "", "*.plot");
    if(!str.isEmpty())
      //close();

.......................

}


Код:
void MainWindow::drawPlot()
{
        Plot y;
        y.show();
}


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 18:08
я же написал, что это QMainWindow

Забыл. В приложении не должно быть двух QMainWindow. Оно на то и главное окно, чтобы быть в одном экземпляре. Более чем уверен, что его безболезненно можно заменить на QDialog, раз оно поверх главного окна, и закрывать acceptом/rejectом, либо на QWidget без родителя


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 18:48
окей, я перепишу на QWidget, что мне тогда нужно будет сделать?


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 11, 2012, 18:56
Поменять форму в дизайнере и закрывать методом close()


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 11, 2012, 21:12
Код:
Поменять форму в дизайнере
не понял
я переделал на QWidget, close(); не работает


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 12, 2012, 10:10
Если не работает, значит что-то ещё не так


Название: Re: QFileDialog если файл не выбран
Отправлено: _OLEGator_ от Март 12, 2012, 10:36
не может close() не работать. Почему он в коде закомментирован? Полный код тогда давайте.


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 12, 2012, 18:07
разумеется я раскоментировал!
Так а какой ещё код нужен, всё же выше написано!


Название: Re: QFileDialog если файл не выбран
Отправлено: Alex Custov от Март 12, 2012, 18:19
Код:
Plot::Plot(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Plot)
{
    QString str = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", "", "*.plot");
    if(!str.isEmpty())
      //close();
}

Код
C++ (Qt)
Plot::Plot(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::Plot)
{
   QTimer::singleShot(0, this, SLOT(slotDelayedInit()));
}
 
void Plot::slotDelayedInit()
{
   QString str = QFileDialog::getOpenFileName(0, tr("Choose a file"), QString(), "*.plot");
 
   if(str.isEmpty())
     close();
}
 


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 12, 2012, 18:25
спасибо за ответ, но ещё не попробовал ваше реализацию!
А в конструкторе нельзя закрыть окно никак?

Может я как-то не правильно создаю новые окно?
У меня например если закрывается главное окно, то побочные нормально сами по себе живут


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 12, 2012, 18:37
если хочется закрыть окно в конструкторе, то это не очень хороший подход - лучше вынести условие, отвечающее за появление окна, в класс родителя (т.е. окна-предка).

если "побочным" не указать родителя, то они будут жить сами по себе.


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 12, 2012, 18:38
Во я слепой :D
Так а чего мы в конструкторе закрывать-то будем? Окно ж ещё не показано. Я так понимаю, вызывающий код такой:

Код
C++ (Qt)
Plot plot;    // внутри вызывается close(), но окно ещё не показано
plot.show();
 

Тогда можно так
Код
C++ (Qt)
Plot plot;
plot.show();
QString file = plot.openFile();
if (file.isEmpty())
 plot.close();
 


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 12, 2012, 19:59
спасибо за ответы, буду разбираться!


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 12, 2012, 22:25
Alex Custov, Вас я совсем не понял
kambala, спасибо, но у меня так и сделано, закрыть то в итоге как?
sudo, если так, как вы подсказали, реализовывать, то я не понимаю как передать str, ведь так оно задастся в классе MainWindow, а мне str нужна будет в классе Plot, а множественное наследование в Qt как я понял не реализуемо вот так
Код:
#ifndef PLOT_H
#define PLOT_H

#include <QWidget>

#include "mainwindow.h"

namespace Ui {
    class Plot;
}

[b]class Plot : public QWidget, public MainWindow // в MainWindow описал str как открытую переменную
[/b]{
    Q_OBJECT

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

private:
    Ui::Plot *ui;
};

#endif // PLOT_H


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 12, 2012, 22:30
спасибо за ответы, буду разбираться!
Минимально неработающий код в студию! А то этот тред похож на общение начинающих телепатов  ;D.


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 12, 2012, 22:46
так а чем вам мой пост выше не нравится?


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 12, 2012, 22:54
kambala, спасибо, но у меня так и сделано, закрыть то в итоге как?
если так и сделано (выбирать файл в слоте родителя, и если файл выбран, то создавать диалог), то зачем тогда пытаться закрыть окно в конструкторе?


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 12, 2012, 22:57
так а чем вам мой пост выше не нравится?
Ну смотри, вот это:
Код:
public QWidget, public MainWindow
MainWindow ведь наследник он QMainWindow? Если да, то QMainWindow ведь унаследован от QWidget. Плюс и они оба унаследованы от QObjects. Как компилятор должен такую мешанину в один класс запихнуть?
Мне например проще скачать код запустить, убедиться что он не работает и затем сразу поправить и проверить.


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 12, 2012, 23:11
Ещё раз
есть главное окно(A), из него открыть можно другое окно(B), в это другом окне(B) создаётся диалог выбора файла и если файл не выбран, то должно закрыться окно B
Ты вот это хотел? http://rghost.ru/36992424 (http://rghost.ru/36992424)


Название: Re: QFileDialog если файл не выбран
Отправлено: Bepec от Март 13, 2012, 07:07
Жесть :D привнесу нотку своего оффтопа - помоему вместо "отправить читать учебники и учиться" консилиум тут решает проблему методом "напишем за него, а там видно будет" :)


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 08:06
V1KT0P, так оно так, но у вас только одна форма в дизайнере, а у меня две!
Про наследование я понял, что так нельзя, только как я тогда str передам?
Цитировать
sudo, если так, как вы подсказали, реализовывать, то я не понимаю как передать str, ведь так оно задастся в классе MainWindow, а мне str нужна будет в классе Plot, а множественное

Bepec, я читаю, просто в этом случае не смог разобраться


Название: Re: QFileDialog если файл не выбран
Отправлено: Bepec от Март 13, 2012, 09:41
Блин ёмое. Нужна тебе эта str - так вообще передавай её прямым вызовом функции, сигналом, в конструкторе её инициализируй чоле :)

Или указатель/ссылку на него передавай. Проблема выеденного яйца не стоит ёмоё.


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 13, 2012, 09:42
V1KT0P, так оно так, но у вас только одна форма в дизайнере, а у меня две!
Вот поэтому я и говорю что нужно выложить минимальный нерабочий вариант, ибо одно и то-же можно сделать многими способами.


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 13, 2012, 10:54
Вариантов вагон и маленькая тележка

Можно вот так:
Код
C++ (Qt)
Plot plot;
plot.show();
QString file = plot.openFile();
if (file.isEmpty())
 plot.close();
else
 plot.setFileName(file);
 

Можно так:
Код
C++ (Qt)
void Plot::show()
{
 QString file = plot.openFile();
 if (!file.isEmpty())
   QWidget::show();
}
 

Можно сигнал послать, только зачем, или ещё чего придумать


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 14:40
оформил так

Код:
void MainWindow::showPlot()
{
    Plot *bufka2 = new Plot;
    bufka2->show();
}



Код:
void MainWindow::drawPlot()
{
        Plot y;
        y.show();
        //открытие файла
        QString strCheck = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", "", "*.plot");
        if(!strCheck.isEmpty())
              y.close();
        else
          y.setFileName(strCheck);
}

Код:
void Plot::setFileName(QString strCheck)
{
    str=strCheck;
}

Код:
#ifndef PLOT_H
#define PLOT_H

#include <QWidget>

...............

namespace Ui {
    class Plot;
}

class Plot : public QWidget
{
    Q_OBJECT

public:
    explicit Plot(QWidget *parent = 0);
    ~Plot();
    QString str;
    void setFileName(QString strCheck);
protected:
    ....................
private:
    Ui::Plot *ui;
};

#endif // PLOT_H

Скомпилилось, но теперь при нажатии на кнопку, после которой предлагалось выбрать файл програ падает
Цитировать
QFSFileEngine::open: No file name specified


Название: Re: QFileDialog если файл не выбран
Отправлено: mutineer от Март 13, 2012, 14:43
Код
C++ (Qt)
if(!strCheck.isEmpty())
             y.close();
       else
         y.setFileName(strCheck);
ты уверен, что закрывать надо именно при непустой строке?


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 14:50
закрыть надо при пустой, разве не так проверить на пустоту?

а вообще даже если так написать, всё равно даже выбор файла не появится
Код:
void MainWindow::drawPlot()
{
//мне кажется так не правильно!
        Plot y;
        y.show();
        //открытие файла
        QString strCheck = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", "", "*.plot");
        if(!strCheck.isEmpty())
            y.setFileName(strCheck);

        else
            y.close();
}


Название: Re: QFileDialog если файл не выбран
Отправлено: QuAzI от Март 13, 2012, 14:52
Zeka13, вообще в идеале когда просят код и это не закрытая разработка, выложить архив с проектом, чтобы его мог народ нормально его видеть ВЕСЬ, скомпилить и запустить и оно переделывается и решается за 2 минуты.

По части вашего кода... это вообще маразм показывать форму чтобы её закрыть. По моему это свободно решается так:
Код:
void MainWindow::drawPlot()
{
        QString strCheck = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", "", "*.plot");
        if(!strCheck.isEmpty())
       {
           Plot y;
           y.setFileName(strCheck);
           y.show();
       }
}
Окно B будет показано при условии что файл нужный окну выбран. Что ещё надо для счастья?


Название: Re: QFileDialog если файл не выбран
Отправлено: mutineer от Март 13, 2012, 14:52
закрыть надо при пустой, разве не так проверить на пустоту?

а вообще даже если так написать, всё равно даже выбор файла не появится
Код:
void MainWindow::drawPlot()
{
//мне кажется так не правильно!
        Plot y;
        y.show();
        //открытие файла
        QString strCheck = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", "", "*.plot");
        if(!strCheck.isEmpty())
            y.setFileName(strCheck);

        else
            y.close();
}

Код
C++ (Qt)
QString strCheck = QFileDialog::getOpenFileName(0, "Выберити файл для открытия", QString(), "*.plot");
попробуй так

strCheck.isEmpty() == true если строка пустая
!strCheck.isEmpty() == true если строка не пустая


Название: Re: QFileDialog если файл не выбран
Отправлено: QuAzI от Март 13, 2012, 14:55
всё равно даже выбор файла не появится
Должен или матюкнуться или событие drawPlot не наступает. Это вообще откуда?


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 13, 2012, 14:56
почему так сложно создать объект Plot только если файл был выбран?
Код
C++ (Qt)
void MainWindow::drawPlot()
{
   QString strCheck = QFileDialog::getOpenFileName(this, "Выберите файл для открытия", "", "*.plot");
   if(!strCheck.isEmpty())
   {
       Plot y;
       y.setFileName(strCheck);
       y.show();
   }
}

а в методе showPlot() - утечка памяти


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 15:04
QuAzI, так тоже не работает с той же ошибкой
mutineer, я же сказал, что никак не работает


Название: Re: QFileDialog если файл не выбран
Отправлено: mutineer от Март 13, 2012, 15:05
QuAzI, так тоже не работает с той же ошибкой
mutineer, я же сказал, что никак не работает

QString() вместо "" ставить в третий параметр пробовал? Или читать предпочитаешь выборочно?


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 13, 2012, 15:14
QuAzI, так тоже не работает с той же ошибкой
mutineer, я же сказал, что никак не работает
у тебя наверное в MainWindow кнопка не к тому слоту привязана - должна быть к drawPlot()
QuAzI, так тоже не работает с той же ошибкой
mutineer, я же сказал, что никак не работает

QString() вместо "" ставить в третий параметр пробовал? Или читать предпочитаешь выборочно?
это не влияет


Название: Re: QFileDialog если файл не выбран
Отправлено: mutineer от Март 13, 2012, 15:16
это не влияет

это влияет на работу проверки isNull() у строки


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 15:18
ничего не изменилось ...


Название: Re: QFileDialog если файл не выбран
Отправлено: QuAzI от Март 13, 2012, 15:21
Тогда так, при условии что QFileDialog, QDir и QString объявлены в инклюдах
Код:
void MainWindow::drawPlot()
{
        QString strCheck = QFileDialog::getOpenFileNames( this, QString("Select plugin files"), QDir::currentPath(), QString("Plot files (*.plot)")) );

        if(!strCheck.isEmpty())
       {
           Plot y;
           y.setFileName(strCheck);
           y.show();
       }
}
И при условии, что событие наступает. А оно не наступает, более чем уверен. И исходников принципиально аffтор не даст


Название: Re: QFileDialog если файл не выбран
Отправлено: Bepec от Март 13, 2012, 15:25
Ребят. Я думаю вы хней маетесь... Уже второй такой человек на форуме - даёт некорректную задачу с некорректным решением.

И вместо того чтобы человека направить на правильное использование - все начинают решать его некорректную задачу. И корёжить без того странный разум автора...


Название: Re: QFileDialog если файл не выбран
Отправлено: kambala от Март 13, 2012, 15:46
это не влияет

это влияет на работу проверки isNull() у строки
у строки - да, а диалогу выбора файла всё равно
Ребят. Я думаю вы хней маетесь... Уже второй такой человек на форуме - даёт некорректную задачу с некорректным решением.

И вместо того чтобы человека направить на правильное использование - все начинают решать его некорректную задачу. И корёжить без того странный разум автора...
задача корректна и ясна, а ТС просто ответы читать не умеет


Название: Re: QFileDialog если файл не выбран
Отправлено: Bepec от Март 13, 2012, 15:48
Таки зачем писать, если автор неадекватен?


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 13, 2012, 16:04
И вместо того чтобы человека направить на правильное использование - все начинают решать его некорректную задачу. И корёжить без того странный разум автора...

Главное - себе не корёжить :D Я обычно на такие вопросы спинным мозгом отвечаю :D


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 16:07
вот исходники, нужна библиотека qwt 6 для сборки
в репах есть libqwt-dev


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 13, 2012, 16:14
вот исходники, нужна библиотека qwt 6 для сборки
в репах есть libqwt-dev
Дык тебя попросили выложить минимальный рабочий пример. Это значит что надо скопировать проект и обрезать все что не касается ошибки. Отобразить два окна и одно диалоговое окно можно и без библиотеки qwt 6.


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 16:26
не быстрее будет сделать
sudo apt-get install libqwt-dev -y

или мне всё же делать минимальный рабочий пример?


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 13, 2012, 16:31
не быстрее будет сделать
sudo apt-get install libqwt-dev -y

или мне всё же делать минимальный рабочий пример?
Ну я например сижу щас на винде. То-есть те кто сидит на винде и лень устанавливать либу просто не захотят тебе помогать.


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 13, 2012, 16:40
вот минимальные исходники


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 13, 2012, 16:51
вот минимальные исходники
Все равно пришлось дочищивать от библиотеки =). Вот как я вижу решение проблемы: http://rghost.ru/37001630 (http://rghost.ru/37001630).


Название: Re: QFileDialog если файл не выбран
Отправлено: QuAzI от Март 13, 2012, 16:59
Ну вот, я тоже пока почистил, и уже опаньки
http://rghost.ru/37001790

P.s. прикольный хостинг, спасибо, надо бы не забыть адрес


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 14, 2012, 12:02
QFSFileEngine::open: No file name specified


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 14, 2012, 12:06
QFSFileEngine::open: No file name specified

Ну дык добавь еще и проверку на существование файла.


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 14, 2012, 12:11
Это как? Я же выбираю файл, который существует!
вот пожалуйста, компилится без либ, в выбранный файл должно быть записано слово, оно не записывается!


Название: Re: QFileDialog если файл не выбран
Отправлено: sudo от Март 14, 2012, 12:23
Откуда ж ему взяться. Строка в конструкторе записывается, а устанавливается только потом


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 14, 2012, 12:28
так и что вы предлагается сделать?


Название: Re: QFileDialog если файл не выбран
Отправлено: Alex Custov от Март 14, 2012, 12:40
вот пожалуйста, компилится без либ, в выбранный файл должно быть записано слово, оно не записывается!

ты похоже основ С++ не знаешь. Нужно подучить, иначе ничего хорошего из этого не выйдет, как и получается тут - уже пять страниц обсуждения ни о чём. Взять этот же код:

Код
C++ (Qt)
Plot *bufka2 = new Plot; // файл будет записан уже здесь
bufka2->setFileName(fname); // а имя файла установится только здесь
 

Ты сперва создаёшь объект Plot, внутри конструктора которого сразу же записываешь файл:

Код
C++ (Qt)
Plot::Plot(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Plot)
{
...
       QFile file(main_fName);
       file.open(QIODevice::Append | QIODevice::Text);
       QTextStream out(&file);
       out << "check!";
       file.close();
}
 

И только потом устанавливаешь собственно имя файла через setFileName(fname), куда что-то писать. Естественно, что в файл ничего не запишется.


Название: Re: QFileDialog если файл не выбран
Отправлено: V1KT0P от Март 14, 2012, 13:00
так и что вы предлагается сделать?
Так я же тебе пример сделал как через конструктор передать строку, именно так как ты хотел. При чем я первый выложил, а ты взял второй который тебе как-раз и не подходит.
Вот пробуй: http://rghost.ru/37015470 (http://rghost.ru/37015470).


Название: Re: QFileDialog если файл не выбран
Отправлено: Zeka13 от Март 14, 2012, 13:33
спасибо  огромное, V1KT0P, вы могли просто посоветовать мне использовать констуктор с параметром =)
Мне можно было посоветовать это с самого начала и даже не писать за меня мой код
Спасибо всем, кто проявил терпение и великодушее! 


Название: Re: QFileDialog если файл не выбран
Отправлено: mutineer от Март 14, 2012, 14:34
спасибо  огромное, V1KT0P, вы могли просто посоветовать мне использовать констуктор с параметром =)
Мне можно было посоветовать это с самого начала и даже не писать за меня мой код
Спасибо всем, кто проявил терпение и великодушее! 

Если бы ты изначально правильно описал ситуацию - получил бы сразу правильный ответ