Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2013, 17:43   #1
novicepro
Пользователь
 
Регистрация: 01.05.2011
Сообщений: 38
По умолчанию Qt Открыть/Сохранить как

Добрый день. как вызвать в QT диалоговые окна Открыть и Сохранить как по нажатию кнопки?
novicepro вне форума Ответить с цитированием
Старый 11.10.2013, 18:47   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Гуглите класс QDialog и его потомков (вам конкретно нужен QFileDialog)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 14.10.2013, 21:58   #3
novicepro
Пользователь
 
Регистрация: 01.05.2011
Сообщений: 38
По умолчанию

попыталась разобраться, но оказалось чуть сложновато.подскажите, пожалуйста. как сделать, чтобы при нажатии на кнопку "OPEN" открывалось окно Открыть... (думаю, что по аналогии уже смогу сама сделать и кнопку "Save as...")
создала кнопку:
Код:
ui->PrintBtnImport->setText("OPEN");
после прописала слоты:
Код:
private slots:
    void open();
    void save();
в интернете нашла пример немного похожий, но не знаю как исправить его под мою кнопку(находится на гл. форме).
Код:
void Project::open()
{
    QString fileName=QFileDialog::getOpenFileName(this,tr("OpenFile"),"",tr("Text Files (*.txt);;C++ Files (*.cpp *.h)"));
    if (fileName !=""){
        QFile file(fileName);
        if (!file.open(QIODevice::ReadOnly)){
            QMessageBox::critical(this,tr("Error"),tr("Could not open file"));
            return;
        }
        QTextStream in(&file);
        textEdt->setText(in.readAll());
        file.close();
    }
}

void Project::save()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "",
    tr("Text Files (*.txt);;C++ Files (*.cpp *.h)"));

    if (fileName != "") {
        QFile file(fileName);
        if (!file.open(QIODevice::WriteOnly)) {
            // error message
        } else {
            QTextStream stream(&file);
            stream << textEdit->toPlainText();
            stream.flush();
            file.close();
        }
    }
}
и для чего служит следующая строка программы:
Код:
 textEdt->setText(in.readAll());
novicepro вне форума Ответить с цитированием
Старый 15.10.2013, 10:52   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
и для чего служит следующая строка программы:


Код:
textEdt->setText(in.readAll());
Эта строка загружает текст в textEdt из объекта in (в объекте in хранится содержимое выбранного файла)

Спрашивайте, не стесняйтесь. Что ещё непонятно?

Запустите у себя следющий примерчик (я взял его из книги Foundations of Qt Development By Johan Thelin)

Код:
#include <QApplication>

#include <QFileDialog>

class Tester : public QWidget
{
public:
    void openFile()
    {
        QFileDialog::getOpenFileName( this, tr("Open Document"), QDir::currentPath(), tr("Document files (*.doc *.rtf);;All files (*.*)"), 0, QFileDialog::DontUseNativeDialog );

        QString filename = QFileDialog::getOpenFileName(
                    this,
                    tr("Open Document"),
                    QDir::currentPath(),
                    tr("Document files (*.doc *.rtf);;All files (*.*)") );
        if( !filename.isNull() )
        {
            qDebug( filename.toAscii() );
        }
    }

    void openFiles()
    {
        QStringList filenames = QFileDialog::getOpenFileNames(
                    this,
                    tr("Open Document"),
                    QDir::currentPath(),
                    tr("Documents (*.doc);;All files (*.*)") );
        if( !filenames.isEmpty() )
        {
            qDebug( filenames.join(",").toAscii() );
        }
    }

    void openDir()
    {
        QString dirname = QFileDialog::getExistingDirectory(
                    this,
                    tr("Select a Directory"),
                    QDir::currentPath() );
        if( !dirname.isNull() )
        {
            qDebug( dirname.toAscii() );
        }
    }

    void saveFile()
    {
        QString filename = QFileDialog::getSaveFileName(
                    this,
                    tr("Save Document"),
                    QDir::currentPath(),
                    tr("Documents (*.doc)") );
        if( !filename.isNull() )
        {
            qDebug( filename.toAscii() );
        }
    }
};

int main( int argc, char **argv )
{
    QApplication app( argc, argv );

    Tester t;

    t.openFile();
    t.openFiles();
    t.openDir();
    t.saveFile();

    return 0;
}
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при нажатии на ссылку установка выходит диалог открыть или сохранить, как от него избавиться? Rus_ld Общие вопросы Delphi 3 03.05.2010 13:31
Открыть файл как Hex найти там некий участок кода, заменить его и сохранить AstraZak Общие вопросы C/C++ 10 05.03.2010 18:58
Сохоанить, Сохранить как, Открыть несколько элементов в одном файле Polotenchik Общие вопросы Delphi 9 01.08.2009 13:37
Как открыть и сохранить mp3 файл в delphi? Rahim1993 Мультимедиа в Delphi 2 03.01.2008 12:55
Как с помощью Delphi открыть/сохранить/удалить текстовый документ SeRhy Помощь студентам 4 02.11.2007 20:27