o
otvertkaMay 18, 2018, 1:58 a.m.

Выводит мусор

Добрый день

Я считываю значение цветов из файла и записываю их в вектор. Вроде все нормально. В выводе программы пишет:

testcolor 0 "#000000" 4278190080 "#000000" // testcolor: index, string, rgb, hex

testcolor 1 "#808080" 4286611584 "#808080"

testcolor 2 "#FFFFFF" 4294967295 "#ffffff"

testcolor 3 "#FF00FF" 4294902015 "#ff00ff"

testcolor 4 "#FF0000" 4294901760 "#ff0000"

testcolor 5 "#800000" 4286578688 "#800000"

testcolor 6 "#FFFF00" 4294967040 "#ffff00"

testcolor 7 "#808000" 4286611456 "#808000"

testcolor 8 "#00FF00" 4278255360 "#00ff00"

testcolor 9 "#008000" 4278222848 "#008000"

testcolor 10 "#00FFFF" 4278255615 "#00ffff"

testcolor 11 "#008080" 4278222976 "#008080"

testcolor 12 "#0000FF" 4278190335 "#0000ff"

testcolor 13 "#000080" 4278190208 "#000080"

QFile fileColor("file_color.txt");
    fileColor.open(QIODevice::ReadOnly);
        for(int i=0; !fileColor.atEnd();i++){
            QString color = fileColor.readLine();
            color.remove("\r\n");
            QColor *colorhex = new QColor(color);
            QString style = "QPushButton{background:"+color+";}";
            palette->colorButton.push_back(colorhex);
             qDebug() << "testcolor "<< i << color << " " << colorRGB << palette->colorButton.at(i)->name();
            palette->colorPushButton.at(i)->setStyleSheet(style);
            delete colorhex;
    }
        qDebug() << "testcolor2 " << palette->colorButton.at(2)->name();
Но при выходе из цикла в векторе почему-то хранится мусор. Должно быть "#ffffff". А выводит:

testcolor2 "#000000". Иногда ещё "#dcdcdc"
Спасибо.
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

5
Evgenii Legotckoi
  • May 18, 2018, 2:37 a.m.
  • (edited)

Добрый день!

Вот это лишняя строка

delete colorhex;
Вы сохраняете в куче объект, добавляете его в вектор, и сразу удаляете. В векторе будет невалидный указатель на объект QColor, по идее программа вообще должна крашится.
    o
    • May 18, 2018, 9:57 p.m.

    Спасибо.

    Еще один вопрос.  Вот написал механизм для обработки нажатия мышкой на кнопку.
    ...
    connect(palette->colorPushButton.at(0),&QPushButton::clicked,this, &Paint::slotButton0);
    ...
    connect(this,&Paint::signalFromButton, scene, &paintScene::slotColorPenFromPalette);
    ...

    void Paint::slotButton0()
    {
        emit signalFromButton(*palette->colorButton.at(0));
    }
    void paintScene::slotColorPenFromPalette(QColor color)
    {
          mainPen->colorPen = color;  
    }
    
    Как определить какая кнопка(левая или правая) была нажата?
      Evgenii Legotckoi
      • May 19, 2018, 12:15 a.m.

      Левая или правая кнопка чего? мыши?

      Если мыши, то наследуйтесь от QPushButton и переопределяйте один из методов обработки событий мыший, вот например так
      void MyCustomPushButton::mousePressEvent(QMouseEvent *event)
      {
          if (event->button() == Qt::RightButton) {
              // Todo Something for Right Button
          }
          else if (event->button() == Qt::LeftButton)
          {
              // Todo something for Left Button
          }
          
          // Вызов метода базового класса
          QPushButton::mousePressEvent(event);
      }
        o
        • May 21, 2018, 10:18 p.m.

        Да, мыши.

        Т.е. мне надо создать класс-потомок от QPushButton, и там переопределить метод mousePressEvent?
        И как тогда у  Buttons поменять класс на созданный?
          Evgenii Legotckoi
          • May 22, 2018, 12:57 p.m.
          • The answer was marked as a solution.

          Имено, класс-потомок.
          Если добавляли кнопки в графическом дизайнере, то нужно вызвать контекстное меню на кнопке в дизайнере, выбрать пункт "преобразовать в" либо "Promote to". Там будет диалог, в котором Вам нужно будет добавить ваш насоедованный класс и указать его заголовочный файл и файл реализации.

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            Ua

            Qt - Test 001. Signals and slots

            • Result:84points,
            • Rating points4
            Ua

            Qt - Test 001. Signals and slots

            • Result:42points,
            • Rating points-8
            ОК

            Qt - Test 001. Signals and slots

            • Result:47points,
            • Rating points-6
            Last comments
            ИМ
            Игорь МаксимовNov. 22, 2024, 9:51 p.m.
            Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            Evgenii Legotckoi
            Evgenii LegotckoiOct. 31, 2024, 11:37 p.m.
            Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
            A
            ALO1ZEOct. 19, 2024, 5:19 p.m.
            Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
            ИМ
            Игорь МаксимовOct. 5, 2024, 4:51 p.m.
            Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
            d
            dblas5July 5, 2024, 8:02 p.m.
            QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            Now discuss on the forum
            f
            firstlunoxodFeb. 15, 2025, 1:46 p.m.
            Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
            Дмитрий
            ДмитрийFeb. 3, 2025, 4:24 p.m.
            Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
            NW
            Nayo WaiJan. 30, 2025, 7:22 p.m.
            не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
            n
            nklyJan. 3, 2025, 12:52 p.m.
            Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
            M
            MarselAug. 17, 2023, 12:26 a.m.
            OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

            Follow us in social networks