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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: переопределение mouse press event  (Прочитано 21295 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #15 : Май 06, 2014, 09:28 »

я так понял что то нужно сюда прописать?

mytreeview.cpp
Цитировать
#include "mytreeview.h"

mytreeview::mytreeview(   ///ЧТО ТО ТУТ)
{
}
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #16 : Май 06, 2014, 09:29 »

Old
а что туда нужно передать?

Туда как раз что надо передают, а ваш конструктор ничего не принимает. Улыбающийся
Что бы работать с Qt нужно знать С++. Без его знания, к Qt лучше не подходить.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #17 : Май 06, 2014, 09:41 »

я так понял что то нужно сюда прописать?
Да. Посмотрите что за параметр передается в конструктор любого виджета и сделайте так же у себя.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #18 : Май 06, 2014, 17:40 »

Old
Я посмотрел сделал вот так

mytreeview.h


Код:
#ifndef MYTREEVIEW_H
#define MYTREEVIEW_H
#include <QTreeView>
#include <QMessageBox>
#include <QMouseEvent>
class mytreeview : public QTreeView
{
public:
    mytreeview(QWidget *parent);
protected:
    void mousePressEvent( QMouseEvent * event );


public:
    QMessageBox msg;

};

#endif // MYTREEVIEW_H

mytreeview.cpp

Код:
#include "mytreeview.h"

mytreeview::mytreeview(QWidget *parent)

{
}
void mytreeview::mousePressEvent(QMouseEvent *event)
{

    if (event->button() == Qt::RightButton) {
        // здесь обрабатываем левую кнопку мыши
        msg.setText("pravay");
        msg.exec();
    }
    else
    {
        // передаём остальные кнопки в базовый класс
        QTreeView::mousePressEvent(event);
    }
}


в итоге получилось как бы не правильно
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #19 : Май 06, 2014, 18:08 »

таким образом тривиев вообще слез с формы основной и создался в виде отдельной как бы а это не правильно....
Записан
Bepec
Гость
« Ответ #20 : Май 06, 2014, 18:26 »

А вот тут надо понять куда сувать родителя Веселый
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #21 : Май 06, 2014, 18:29 »

Bepec
Подскажите а то очень надо
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #22 : Май 06, 2014, 18:32 »

сделал так

Код:
mytreeview::mytreeview(QWidget *parent)
    :QTreeView(parent)


{
}

но так вроде в первом окне тривиев появился но почему то создается второе окно (пустое окно)

так как мне избавиться от второго пустого окна?
« Последнее редактирование: Май 06, 2014, 18:48 от koldun90 » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #23 : Май 06, 2014, 18:53 »

так как мне избавиться от второго пустого окна?
Ну а как это можно сказать без вашего кода?
Показывайте. Улыбающийся
Записан
Bepec
Гость
« Ответ #24 : Май 06, 2014, 18:55 »

Код наше всё. Особенно в теге #code или архиве с проектом Улыбающийся
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #25 : Май 06, 2014, 19:06 »

и так выкладываю код:

mytreeview.h
Цитировать
#ifndef MYTREEVIEW_H
#define MYTREEVIEW_H
#include <QTreeView>
#include <QMessageBox>
#include <QMouseEvent>
class mytreeview : public QTreeView
{
public:
    mytreeview(QWidget *parent);
protected:
    void mousePressEvent( QMouseEvent * event );


public:
    QMessageBox msg;

};

#endif // MYTREEVIEW_H

mytreeview.cpp

Код:
#include "mytreeview.h"

mytreeview::mytreeview(QWidget *parent)
    :QTreeView(parent)


{
}
void mytreeview::mousePressEvent(QMouseEvent *event)
{

    if (event->button() == Qt::RightButton) {
        // здесь обрабатываем левую кнопку мыши
        msg.setText("pravay");
        msg.exec();
    }
    else
    {
        // передаём остальные кнопки в базовый класс
        QTreeView::mousePressEvent(event);
    }
}


mainwindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "mytreeview.h"
#include <QMainWindow>
#include <QFileSystemModel>
#include <QMessageBox>
#include <QString>
#include <QStringListModel>
#include <QMouseEvent>
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;
    QString str;
    mytreeview tt;
};

#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);
    mytreeview *hh=new mytreeview;
    hh->show();




}

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

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


    bool q=model1->isDir(index);   // В случае если объект папка
    if (q)
    {
         //int i;
         str=model1->fileInfo(index).absoluteFilePath();  // взятие абсолютного пути
         if (!path.contains(str))     // в случае если путь не содержитьсся в списке
         {
            path<<str;    // то добавляем его
         }
         else
         {
             for (int i=0;i<path.size();i++)
             {
                 if (path[i]==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[i]==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<<str;



    //path.clear();
}

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

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

« Последнее редактирование: Май 06, 2014, 22:07 от koldun90 » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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