s
sol1115 марта 2018 г. 2:18

Контекстное меню..

#Qt

Evileg после этого https://evileg.com/forum/topic/473/ решил добавить к своему проекту, выбор действия по контекстному меню, удаление работает, а редактировать не получается. Скрин ниже :( Можешь помочь пожалуйста, как тут сделать?

photo_2018-03-14_23-11-35.jpg
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

7
BlinCT
  • 15 марта 2018 г. 2:30

Добрый вечер.
Почитайте пожалуйста вот эту тему https://evileg.com/post/87/
У сигнала и слота должна быть схожая сигнатура. В вашем же случаи сигнал ничего не посылает а слот принимает индекс. То есть их сигнатура очень различна.
А по статье там слот ничего не принимает.

    s
    • 15 марта 2018 г. 2:46

    Я понимаю что должна быть похожая сигнатура, просто не могу придумать как в контекстную менюшку отправить индекс, щас это выглядит так ->

      BlinCT
      • 15 марта 2018 г. 2:54
      • (ред.)

      Не кидайте пожалуйста скриншоты. Хотите показать код просто вставкой сделайте.

        Evgenii Legotckoi
        • 15 марта 2018 г. 2:56

        Добрый день!

        Не надо кидать скриншоты программного кода. В редакторе комментариев есть диалог вставки программного кода. Пользуйтесь им, пожалуйста.
        Если кто-то захочет вам помочь, то будет вынужден перепечатывать вручную весь код, если ему потребуется повторить его работу у себя.
        Ни на одном форуме не приветствуется вставка программного кода в виде скриншотов.
          s
          • 15 марта 2018 г. 3:05
              connect(ui->deviceTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(slotEditRecord(QModelIndex)));
              // Коннект к слоту вызова контекстного меню
              connect(ui->deviceTableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotCustomMenuRequested(QPoint)));
          }
          
          
          void MainWindow::slotCustomMenuRequested(QPoint pos) // Контекстное меню
          {
            
              QMenu *menu = new QMenu(this);
          
              QAction *editDevice = new QAction(trUtf8("Редактировать"), this);
              QAction *deleteDevice = new QAction(trUtf8("Удалить"), this);
              
          
              connect(editDevice, SIGNAL(triggered()), this, SLOT(slotEditRecord(QModelIndex)));
          
              connect(deleteDevice, SIGNAL(triggered()), this, SLOT(slotRemoveRecord()));
          
          
              menu->addAction(editDevice);
              menu->addAction(deleteDevice);
          
              menu->popup(ui->deviceTableView->viewport()->mapToGlobal(pos)); 
          } Такс, вот
            Evgenii Legotckoi
            • 15 марта 2018 г. 3:31
            • Ответ был помечен как решение.

            Создайте ещё один слот специально для контекстного меню, назовём его например onEditDeviceAction() , чтобы не было аргумента с индексом.

            А выглядеть он будет так.
            void MainWindow::onEditDeviceAction()
            {
                slotEditRecord(ui->deviceTableView->selectionModel()->currentIndex());
            }
            И вот этот слот уже подключайте к сигналу.
            connect(editDevice, SIGNAL(triggered()), this, SLOT(onEditDeviceAction()));
            По сути это будет такая обёртка, которая предоставит нужный индекс в ваш метод для редактирования записи.

            Не забудьте объявить слот void onEditDeviceAction() в заголовочном файле класса MainWindow
              s
              • 16 марта 2018 г. 11:15

              Спасибо :)

                Комментарии

                Только авторизованные пользователи могут публиковать комментарии.
                Пожалуйста, авторизуйтесь или зарегистрируйтесь
                Ua

                Qt - Тест 001. Сигналы и слоты

                • Результат:84баллов,
                • Очки рейтинга4
                Ua

                Qt - Тест 001. Сигналы и слоты

                • Результат:42баллов,
                • Очки рейтинга-8
                ОК

                Qt - Тест 001. Сигналы и слоты

                • Результат:47баллов,
                • Очки рейтинга-6
                Последние комментарии
                ИМ
                Игорь Максимов22 ноября 2024 г. 21:51
                Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                Evgenii Legotckoi
                Evgenii Legotckoi31 октября 2024 г. 23:37
                Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                A
                ALO1ZE19 октября 2024 г. 17:19
                Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                ИМ
                Игорь Максимов5 октября 2024 г. 16:51
                Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                d
                dblas55 июля 2024 г. 20:02
                QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                Сейчас обсуждают на форуме
                f
                firstlunoxod15 февраля 2025 г. 13:46
                Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
                Дмитрий
                Дмитрий3 февраля 2025 г. 16:24
                Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                NW
                Nayo Wai30 января 2025 г. 19:22
                не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                n
                nkly3 января 2025 г. 12:52
                Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                M
                Marsel17 августа 2023 г. 0:26
                OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

                Следите за нами в социальных сетях