Russian Qt Forum
Май 04, 2024, 04:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 21 22 [23]
331  Qt / Вопросы новичков / Событие при клике на модель файлов : Май 03, 2014, 18:11
Добрый день уважаемые форумчане я делаю файловый менеджер посредством qfilesytemmodel+qtreeview.
Возникла у меня проблема небольшая проблема
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileSystemModel>
#include <QMessageBox>
#include <QString>
#include <QStringListModel>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_treeView_clicked(const QModelIndex &index);

    void on_treeView_2_clicked(const QModelIndex &index);

    void on_treeView_customContextMenuRequested(const QPoint &pos);

    void on_treeView_2_customContextMenuRequested(const QPoint &pos);

private:
    Ui::MainWindow *ui;
public:
    int r;
    int e;
    QFileSystemModel *model1;
    QFileSystemModel *model2;
    QMessageBox msg;
    QStringList path;
    QStringList path2;
    QStringListModel stringmodel;
    QStringListModel stringmodel2;
    QMenu *menu;
    QAction *kopirov;
    QAction *udalit;
    QAction *vyrezat;
    QAction *vstavit;
    QAction *pereim;
    QAction *sozd;
    QAction *prosmotr;
};

#endif // MAINWINDOW_H


mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    model1=new QFileSystemModel();
    model2=new QFileSystemModel();
    model1->setRootPath(QDir::currentPath());
    model1->setFilter(QDir::AllDirs | QDir::Files |QDir::NoDotAndDotDot);
    ui->treeView->setModel(model1);
    ui->treeView->hideColumn(2);
    ui->treeView->setAcceptDrops(true);
    ui->treeView->setDragEnabled(true);
    ui->treeView->setDragDropMode(QAbstractItemView::DragDrop);
    ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);


    model2->setRootPath(QDir::currentPath());
    model2->setFilter(QDir::AllDirs | QDir::Files |QDir::NoDotAndDotDot);
    ui->treeView_2->setModel(model2);
    ui->treeView_2->hideColumn(2);
    ui->treeView_2->setAcceptDrops(true);
    ui->treeView_2->setDragEnabled(true);
    ui->treeView_2->setDragDropMode(QAbstractItemView::DragDrop);
    ui->treeView_2->setContextMenuPolicy(Qt::CustomContextMenu);

    menu=new QMenu;
    kopirov= new QAction(QString::fromLocal8Bit("Копировать"),this);
    vyrezat=new QAction(QString::fromLocal8Bit("Вырезать"),this);
    vstavit=new QAction(QString::fromLocal8Bit("Вставить"),this);
    udalit=new QAction(QString::fromLocal8Bit("Удалить"),this);
    pereim=new QAction(QString::fromLocal8Bit("Переименовать"),this);
    sozd=new QAction(QString::fromLocal8Bit("Создать"),this);
    //prosmotr=new QAction(QString::fromLocal8Bit("Просмотр"),this);
    menu->addAction(kopirov);
    menu->addAction(udalit);
    menu->addAction(vyrezat);
    menu->addAction(vstavit);
    menu->addAction(pereim);
    menu->addAction(sozd);
    //menu->addAction(prosmotr);
    vstavit->setVisible(false);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_treeView_clicked(const QModelIndex &index)
{

    bool q=model1->isDir(index);   // В случае если объект папка
    if (q)
    {
         //int i;
         QString str=model1->fileInfo(index).absoluteFilePath();  // взятие абсолютного пути
         if (!path.contains(str))     // в случае если путь не содержитьсся в списке
         {
            path<<str;    // то добавляем его
         }
         else
         {
             for (int i=0;i<path.size();i++)
             {
                 if (path==str)
                 {
                     path.removeAt(i);
                 }
             }
         }
         r=path.size();     // определения количества элементов в списке
         stringmodel.setStringList(path);
         ui->listView->setModel(&stringmodel);

     }
}

void MainWindow::on_treeView_2_clicked(const QModelIndex &index)
{
    bool q=model2->isDir(index);   // В случае если объект папка
    if (q)
    {

         QString str=model2->fileInfo(index).absoluteFilePath();  // взятие абсолютного пути
         if (!path2.contains(str))     // в случае если путь не содержитьсся в списке
         {
            path2<<str;    // то добавляем его
         }
         else
         {
             for (int i=0;i<path2.size();i++)
             {
                 if (path2==str)
                 {
                     path2.removeAt(i);
                 }
             }
         }
         e=path2.size();     // определения количества элементов в списке
         stringmodel2.setStringList(path2);
         ui->listView_2->setModel(&stringmodel2);


     }
}

void MainWindow::on_treeView_customContextMenuRequested(const QPoint &pos)
{

    menu->exec(QCursor::pos());



    //path.clear();
}

void MainWindow::on_treeView_2_customContextMenuRequested(const QPoint &pos)
{

    menu->exec(QCursor::pos());
    //path2.clear();
}

Так вот проблема в следующем. Когда я нажимаю по дереву каталогов файловой системы левой кнопкой мыши(выделяю)его то полный путь папки заносится в strimglist model и отображается в qlistview. В случае повторного нажатия по этому же каталогу он как бы удаляется из списка. Те пользователь выделил папку - значит как бы хочет что нибудь с ней сделать, если снял выделение(повторно нажал) значит не хочет. Но проблема в том когда я нажимаю правой кнопкой мыши то выделение снимается при вызове контекстного меню.... Так вот как сделать так чтоб выделение не снималось конкретно при нажатии пкм(при вызове контекстного меню)?

332  Qt / Вопросы новичков / чем скрыть папку в связке QFileSystemModel+QTreeView : Апрель 26, 2014, 10:28
здравствуйте для файлового менеджера использую связку qfilesystemmodel + qtreeview
Скажите а можно сделать так чтоб определенный каталог скрывался в qtreeview?
просто мне нужно сделать разграничение доступа и допустим пользователь вставляет usb flash, а каталог в менеджере должен не отображаться (mount/sd*)
333  Qt / Вопросы новичков / Re: копирование файлов : Апрель 17, 2014, 13:33
Ребят подскажите как это реализовать, а то я не знаю.
334  Qt / Вопросы новичков / Re: копирование файлов : Апрель 17, 2014, 13:23
я исправил вопрос.
335  Qt / Вопросы новичков / Re: копирование файлов : Апрель 17, 2014, 13:10
а по сути можно?
336  Qt / Вопросы новичков / Re: копирование файлов : Апрель 17, 2014, 13:07
Что мне нужно сделать чтобы скопировать файл из одного окна в другое.
Я как бы пишу файловый менеджер и я не знаю как реализовать функцию копирования файла из одного tree view в другой. Мне нужно реализовать именно копирование переносом файла из одного окна  в другое.
Подскажите что можно использовать для реализации?
337  Qt / Вопросы новичков / копирование файлов : Апрель 17, 2014, 12:56
Здравствуйте есть два окна tree view.В этих окнах есть соответственно модели данных дерево
каталогов.Те один tree view - каталог компьютера и еще один tree view . Вопрос такой.Что мне надо использовать чтобы скопировать мышкой(переносом ) из одного tree view в другой
338  Qt / Вопросы новичков / вопрос по поводу получения данных : Март 20, 2014, 15:38
добрый день уважаемые форумчане хотел спросить а как передать значения переменной со тсранице в браузере в php в программу с++ qt?
те у меня допустим есть код программы:
Код
PHP
<html>
<head>
   <meta charset="utf-8" />
   <title>Рачест точки...</title>
   <meta name="keywords" content="" />
   <meta name="description" content="" />
   <link href="style.css" rel="stylesheet"/>
</head>
<body>
   Клиент сервер soap <br />
   Введите координаты двух точек
   <form method="post">
   <input type="text" name="tochka1"/>
   <input type="text" name="tochka2"/>
   <input name="form" type="submit" value="Задать координаты точки"/>
   </form>
 
   <?
       if (isset($_POST['tochka1']) && isset($_POST['tochka2']))
       {
 
           $text=$_POST['tochka1'];
           $text2=$_POST['tochka2'];
           echo "Ваши координаты точек <br/>";
           echo "$text и $text2 <br/>";
       }
       unset($_POST['tochka1']);
       unset($_POST['tochka2']);
   ?>
 
</body>
</html>
 
мне нужно соответственно передать переменные $text и $text2 внешнему приложению на с++ qt...
допустим в функцию int main(int argc, char *argv[]...
вот как бы объясню
Из своего браузера я захожу как бы на сайт (localhost тк делаю в appserve программу)
вот представьте зашли вы на сайт там код который указан выше( ну два поля).
Потом вы ввели координаты точек первой и второй и нажали на кнопку "задать координаты точек"
далее запущенная программа на qt с++ каким то образом подхватила эти координаты(значения точек) вычислила по своему алгоритму расстояние между двумя точками(алгоритм разумеется напишу сам) и потом после вычисления(расстояния между двумя точками) вернула результат в браузер...
339  Qt / Вопросы новичков / запуск программы : Март 15, 2014, 09:15
здравсвуйте такая проблема установил программу гис конструктор
а как собственно запустить не знаю..
http://www.pictureshack.ru/images/84853_ustan.png
подскажите как вообще запустить qtdisaigner и гис конструктор
я с линуксом знаком недавно... просто я сделал allienom из rpm пакета в deb и установил dpkg
а куда это все установилось?
340  Qt / Вопросы новичков / Re: qt ошибка g++ comand not found : Март 14, 2014, 16:15
так что мне сделать тоу меня нету usr/bin/ g++
341  Qt / Вопросы новичков / Re: qt : Март 14, 2014, 15:57
«путь к компилятору» укажи к g++ а не к gcc
просто в убунте 32 указывал gcc и норм было...
а как он называется в usr/bin/ ?
342  Qt / Вопросы новичков / qt ошибка g++ comand not found : Март 14, 2014, 15:45
добрый день ошибка qt
вообщем установил я qt + qt creator на убунту 64 на виртуалку
они поставились все нормально настройки проекта следующие\
http://www.pictureshack.ru/images/59383_12.png
http://www.pictureshack.ru/images/801_13.png
http://www.pictureshack.ru/images/33081_14.png

затем при компиляции проекта выдает
http://www.pictureshack.ru/images/99690_oshibka1231231.png
 что может быть устанавливал с оф сайта qt
http://qt-project.org/downloads

qt-creator-opensource-linux-x86_64-3.0.1.run
qt-opensource-linux-x64-1.5.0-2-online.run
343  Qt / Работа с сетью / Re: QNetWorkReply ошибка сети : Февраль 25, 2014, 08:57
Ну если у вас в программе ошибка 99 не стопорит прогресс, т.е. с ней по прежнему все открывается, то можете сделать как советует человек выше, но это костыль. Я бы советовал посмотреть, почему она вообще возникает и обрабатывать ее соответствующим образом.
А как понять в моей проге почему она возникает? я уже и сам не знаю почему...
кликаю на папку ошибки нет потом допустим кликаю по этой же папке секунд через 5-10 и ошибка возникает( хотя ее может опять же и не быть) можно тыкнуть хоть 100 раз по одной и той же папке ошибка не возникнет а потом и бац опять возникает...
344  Qt / Работа с сетью / Re: QNetWorkReply ошибка сети : Февраль 24, 2014, 15:29
вот ошибка возникает в этой функции

bool SiuMainWindow::checkForError(QDomElement *element)
{
    int errorCode = element->firstChildElement().firstChildElement("returnCode").firstChild().nodeValue().toInt();
    if (errorCode!=0) {
        QMessageBox msgBox;
        msgBox.setWindowTitle(QString::fromLocal8Bit("ОШИБКА"));
        msgBox.setIcon(QMessageBox::Critical);
        msgBox.setText(element->firstChildElement().firstChildElement("message").firstChild().nodeValue());
        msgBox.exec();

        ui->comboBox->setEnabled(true);
        ui->tab->setEnabled(true);
        ui->tab_2->setEnabled(true);
        ui->tab_3->setEnabled(true);

        return true; // возвращает истину если ошибка
    }
        return false; // возвращает ложь если ошибки нет
}

Можно как нибудь сделать чтоб ошибка по коду 99 не обрабатывалась и окно не вызывалось?
345  Qt / Работа с сетью / QNetWorkReply ошибка сети : Февраль 24, 2014, 14:19
Добрый день проект прилагаю в файле)
В общем у меня такая проблема когда я авторизуюсь потом захожу на сервер(подключась к нему)
затем появляется список ресурсов ( папок)
И бывает так допустим я кликаю на папку  все работает открывается дочерняя ее папка и тд и тп
А бывает что допустим кликнул на папку она открылась все окей а потом еще раз кликнул то вылетает ошибка(
при чем ошибка может вылететь при открытии папок верхнего уровня так и подпапок а может и не вылететь вообще, может допустим открываешь эти папочки все окей а потом бац и ошибка "перед выполнением этого метода требуется авторизация" уже не знаю что делать)
прилагаю скрин

причем в логах вывода вот пишет так:
errorReply
NetworkError -  99
errorReply
ERROR_ERROR_ERROR

Так что же может быть не так? бывает кликаешь по папке все открывается потом кликаешь секунд через 10 по ней снова и уже вылетает ошибка...
файл проекта залил...
вот ссылка  на проект http://files.mail.ru/B52E7EA8D2BF483AACAB63A40EF15AB5
Страниц: 1 ... 21 22 [23]

Страница сгенерирована за 0.14 секунд. Запросов: 23.