Skip to content

French

A forum for those speaking French

155 Topics 807 Posts
  • Signals et Slots entre objets de classes différentes

    Unsolved
    4
    0 Votes
    4 Posts
    673 Views
    SGaistS
    Donc c'est à TimeLinePart3 de transmettre l'information plus haut à CustomLine qui pourra être connecté au label ou en fonction de l'information transmise le slot devrait être dans MainWindow pour mettre à jour le label.
  • childAt provoque une erreur fatale

    Solved
    3
    0 Votes
    3 Posts
    568 Views
    M
    C'était ça.
  • Drag & Drop d'un Widget

    Solved drag&drop widget drag and drop
    5
    0 Votes
    5 Posts
    1k Views
    M
    J'ai fini par réussir à partir de l'exemple cité ci-dessu. Voici le code : mainwidget.h #ifndef WIDGETPARENT_H #define WIDGETPARENT_H #include <QObject> #include <QtWidgets> #include <QPainter> #include <QPen> QT_BEGIN_NAMESPACE class QDragEnterEvent; class QDropEvent; QT_END_NAMESPACE class MainWidget : public QWidget { Q_OBJECT public: explicit MainWidget(QWidget *parent = nullptr); protected: void paintEvent(QPaintEvent *event) override; void dragEnterEvent(QDragEnterEvent *event) override; void dragMoveEvent(QDragMoveEvent *event) override; void dropEvent(QDropEvent *event) override; void mousePressEvent(QMouseEvent *event) override; signals: public slots: }; #endif // WIDGETPARENT_H mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QObject> #include <QWidget> class MainWindow : public QWidget { public: explicit MainWindow(QWidget *parent = nullptr); protected: }; #endif // MAINWINDOW_H movable_child_widget.h #ifndef MOVABLE_CHILD_WIDGET_H #define MOVABLE_CHILD_WIDGET_H #include <QtWidgets> #include <QLabel> class Movable_Child_Widget : public QLabel { public: Movable_Child_Widget(const QString &text, QWidget *parent); QString labelText() const; private: QString m_labelText; }; #endif // MOVABLE_CHILD_WIDGET_H main.cpp #include <QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); #ifdef QT_KEYPAD_NAVIGATION QApplication::setNavigationMode(Qt::NavigationModeCursorAuto); #endif MainWindow window; bool smallScreen = QApplication::arguments().contains(QStringLiteral("-small-screen")); if (smallScreen) window.showFullScreen(); else window.show(); return app.exec(); } mainwidget.cpp #include "mainwidget.h" #include "movable_child_widget.h" static inline QString MemeFamilleDeProgrammes() { return QStringLiteral("application/x-ceTypeDeProgramme"); } // MemeFamilleDeProgrammes définit un type personnalisé de données à transmettre au presse papier. // Si deux occurences de ce même programme sont lancées, il sera ainsi possible de passer des widgets // d'un programme à l'autre. MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { this->setFixedWidth(1000); this->setFixedHeight(100); Movable_Child_Widget *newChild = new Movable_Child_Widget("Child widget", this); newChild->setAttribute(Qt::WA_DeleteOnClose); QPalette pal = QPalette(); this->setGeometry(0, 0, 600, 100); pal.setColor(QPalette::Window, QColor("#CC773C")); this->setAutoFillBackground(true); this->setPalette(pal); setAcceptDrops(true); // <------------------------ Important de le mettre dans le parent du widget à déplacer } void MainWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); painter.setPen(Qt::blue); //painter.setBrush(QBrush("#539e47")); painter.drawRect(0, 0, this->width()-1, this->height()-1); // on place les quarts d'heures QPen pen0(Qt::green); pen0.setWidth(1); pen0.setStyle(Qt::DashDotLine); painter.setPen(pen0); for (int i=0; i<=24*4; i++){ painter.drawLine(int (i*this->width()/96),int (0.5*this->height()-10), int (i*this->width()/96), int (0.5*this->height()+10)); } // on place les heures QPen pen1(Qt::blue); pen1.setWidth(3); painter.setPen(pen1); //painter.setPen(Qt::blue); for (int i=0; i<=24; i++){ painter.drawLine(int (i*this->width()/24), int (0.5*this->height()-10), int (i*this->width()/24), int (0.5*this->height()+10)); } //updateGeometry(); } void MainWidget::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasFormat(MemeFamilleDeProgrammes())) { if (children().contains(event->source())) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else if (event->mimeData()->hasText()) { event->acceptProposedAction(); } else { event->ignore(); } } void MainWidget::dragMoveEvent(QDragMoveEvent *event) { if (event->mimeData()->hasFormat(MemeFamilleDeProgrammes())) { if (children().contains(event->source())) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else if (event->mimeData()->hasText()) { event->acceptProposedAction(); } else { event->ignore(); } } void MainWidget::dropEvent(QDropEvent *event) { if (event->mimeData()->hasFormat(MemeFamilleDeProgrammes())) { const QMimeData *mime = event->mimeData(); QByteArray itemData = mime->data(MemeFamilleDeProgrammes()); QDataStream dataStream(&itemData, QIODevice::ReadOnly); QString text; QPoint offset; dataStream >> text >> offset; Movable_Child_Widget *newChild = new Movable_Child_Widget(text, this); newChild->move(event->pos() - offset); newChild->show(); newChild->setAttribute(Qt::WA_DeleteOnClose); if (event->source() == this) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else if (event->mimeData()->hasText()) { QStringList pieces = event->mimeData()->text().split(QRegularExpression(QStringLiteral("\\s+"))); QPoint position = event->pos(); for (const QString &piece : pieces) { Movable_Child_Widget *newChild = new Movable_Child_Widget(piece, this); newChild->move(position); newChild->show(); newChild->setAttribute(Qt::WA_DeleteOnClose); position += QPoint(newChild->width(), 0); } event->acceptProposedAction(); } else { event->ignore(); } } void MainWidget::mousePressEvent(QMouseEvent *event) { Movable_Child_Widget *child = static_cast<Movable_Child_Widget*>(childAt(event->pos())); if (!child) return; QPoint hotSpot = event->pos() - child->pos(); QByteArray itemData; QDataStream dataStream(&itemData, QIODevice::WriteOnly); dataStream << child->labelText() << QPoint(hotSpot); QMimeData *mimeData = new QMimeData; mimeData->setData(MemeFamilleDeProgrammes(), itemData); mimeData->setText(child->labelText()); QDrag *drag = new QDrag(this); drag->setMimeData(mimeData); const QPixmap *ch = child->pixmap(); drag->setPixmap(*ch); drag->setHotSpot(hotSpot); child->hide(); //if (drag->exec(Qt::MoveAction | Qt::CopyAction, Qt::CopyAction) == Qt::MoveAction) if (drag->exec(Qt::MoveAction)) child->close(); else child->show(); } mainwindow.cpp #include "movable_child_widget.h" #include "mainwindow.h" #include "mainwidget.h" MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { setWindowTitle(tr("Fenêtre principale")); // QPalette newPalette = palette(); // Fenêtre principale newPalette.setColor(QPalette::Window, Qt::gray); // setPalette(newPalette); // this->setWindowState(Qt::WindowMaximized); // this->setFixedSize(2000, 1000); // MainWidget *Widget1 = new MainWidget(this); // Création d'un premier widget Widget1->move(200, 200); // MainWidget *Widget2 = new MainWidget(this); // Création d'un second widget Widget2->move(200, 400); // } movable_child_widget.cpp #include "movable_child_widget.h" Movable_Child_Widget::Movable_Child_Widget(const QString &text, QWidget *parent) : QLabel(parent) { QFontMetrics metric(font()); QSize size = metric.size(Qt::TextSingleLine, text); QImage image(size.width() + 12, size.height() + 12, QImage::Format_ARGB32_Premultiplied); image.fill(qRgba(0, 0, 0, 0)); QFont font; font.setStyleStrategy(QFont::ForceOutline); QLinearGradient gradient(0, 0, 0, image.height()-1); gradient.setColorAt(0.0, Qt::white); gradient.setColorAt(0.2, QColor(200, 200, 255)); gradient.setColorAt(0.8, QColor(200, 200, 255)); gradient.setColorAt(1.0, QColor(127, 127, 200)); QPainter painter; painter.begin(&image); painter.setRenderHint(QPainter::Antialiasing); painter.setBrush(gradient); painter.drawRoundedRect(QRectF(0.5, 0.5, image.width()-1, image.height()-1), 25, 25, Qt::RelativeSize); painter.setFont(font); painter.setBrush(Qt::black); painter.drawText(QRect(QPoint(6, 6), size), Qt::AlignCenter, text); painter.end(); QPushButton *bt = new QPushButton ("bt", this); bt->move(this->width()/2, 0); setPixmap(QPixmap::fromImage(image)); m_labelText = text; } QString Movable_Child_Widget::labelText() const { return m_labelText; }
  • Problème en lecture/écriture de badge RFID mifare classic avec Raspberry et CR038

    Unsolved
    30
    0 Votes
    30 Posts
    7k Views
    R
    @SGaist sorry sir, sorry for this message and i apologies
  • sir ,please share coding of RFID interface with raspberry pi using spi communication

    Unsolved
    2
    0 Votes
    2 Posts
    502 Views
    SGaistS
    Hi, Do you realize that you created a new thread in the French sub forum asking for some code in English ?
  • Problème d'installation Extension : Qt visual Studio Tools 2019

    Unsolved
    1
    0 Votes
    1 Posts
    394 Views
    No one has replied
  • 0 Votes
    3 Posts
    816 Views
    P
    Bonjour, Merci pour la réponse. J'ai téléchargé l'installer sur le site de Qt et j'ai simplement lancé l'installation, comme d'habitude. J'ai repris l'ancienne version de Qt Creator car je n'avais pas de soucis avec (ne sachant pas de où venait le problème). J'ai bien pensé aussi à un problème de signature ou de permission... Mais là... Je sèche ! Edit : J'ai tout désinstallé, tout réinstallé avec encore une autre version (de la même façon qu'avec les autres tentatives) et pour une raison que je ne m'explique pas vraiment, ça a correctement fonctionné au premier lancement, et de nouveau, ça ne fonctionne plus, sans que j'aie rien fait en rapport avec Qt entre temps... Edit 2 : J'ai trouvé ! Par hasard, je suis allé voir dans les préférences systèmes, en ultime recours... [image: Capture-d-cran-2021-07-26-18-58-48.png] Il faut absolument décocher la case. Je ne sais pas pourquoi elle l'était... Bref ! J'ai refait le test inverse pour être sûr, si c'est coché, le problème est systématiquement présent ! En espérant que ça aidera certains 😉
  • Formulaire Qgis avec QtCreator( fichier .ui)

    Unsolved
    4
    0 Votes
    4 Posts
    896 Views
    SGaistS
    Justement, la transition faite n'est pas claire. Les formulaires QGIS ont l'air d'être 100% html et non fait à partir de widget comme Qt.
  • Mon widget ne s'affiche pas

    Unsolved
    4
    0 Votes
    4 Posts
    970 Views
    SGaistS
    Pourquoi le widget principal n'est pas celui du scroll area ? Cette partie n'est pas claire. Si tout doit être présenté par le scroll area, alors il faut que tout soit logé dans un widget qui sera mis sur le scroll area.
  • Bridage du nombre de caractères

    Moved Unsolved
    2
    0 Votes
    2 Posts
    606 Views
    JohanSoloJ
    Bonjour, A mon avis il n'est pas possible de limiter a posteriori la taille d'une traduction. Il est possible de limiter le nombre de charactère (manuellement s'entend) lorsqu'on effectue cette traduction. Est-ce que la police utilisée est du style "monospace"? Si oui, l'espace disponible peut être traduit en un nombre de caractères, ensuite QString::length peut être utilisé pour vérifier si la traduction est trop longue. Si la police n'a pas une chasse fixe, cela devient plus compliqué (un i prend alors moins d'espace qu'un m), mais le principe reste le même.
  • QT et automate

    Unsolved
    5
    0 Votes
    5 Posts
    878 Views
    K
    Une interface sous QT est une interface design, du style des tableaux de bord des voitures (animations, transitions, gif, ...) ce que ne peut offrir les interfaces des automates qui font ancienne et "brut". Mon but est uniquement d'avoir cette interface (avec le programme derrière bien sur), et de communiquer avec l'automate. D'après ce que tu me dis, il est possible de faire ce genre d'interface, et d'échanger des données par modbus ou encore CAN. Donc théoriquement je peux réaliser ce projet.
  • Problème avec la nouvelle version de Qt (6.2.0)

    Moved Unsolved
    8
    0 Votes
    8 Posts
    1k Views
    M
    Bonjour SGaist, Merci pour tes aiguillages ça m'a beaucoup aider. Je suis apssé de Qt 5.13.0 à Qt 5.15.2 et pour l'instant je vais me contenter de cette version Merci encore
  • Problème installation Qt4.7 sur distribution Linux Buster

    Unsolved
    8
    0 Votes
    8 Posts
    1k Views
    SGaistS
    Les widgets ont leur propre module dans Qt 5: QT += widgets dans le fichier .pro et ce sera bon.
  • CMake - cl is not a full path...

    Unsolved
    2
    0 Votes
    2 Posts
    2k Views
    SGaistS
    Hi and welcome to devnet, Might be a silly question but do you have a Qt version built with Visual Studio ?
  • Lister les logiciels installés utilisant Qt

    Unsolved
    2
    0 Votes
    2 Posts
    533 Views
    SGaistS
    Bonjour et bienvenue sur devnet, Pas à ma connaissance, par contre une option simple est de prendre le contenue de la variable d'environnement PATH et de vérifier si il y a là des applications utilisant Qt. Si il y a dysfonctionnement, il se pourrait bien qu'un des logiciels soit mal déployé. Le fait d'en avoir plusieurs ne devrait pas poser de problème.
  • QPixmap

    Solved
    5
    0 Votes
    5 Posts
    1k Views
    P
    @polenord bonjour, j'ai trouvé et corrigé mon erreur. l'image que je récupérai dans le delegate n'était pas conforme au format base64, il manquait le caractère "/" en début de chaîne. voici mon code corrigé : void pixDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const { if (index.column() != 3) { QItemDelegate::setEditorData(editor, index); return; }. QLabel *label = qobject_cast<QLabel *>(editor); if (label) { QPixmap pixmap; QVariant imageData = index.data(); pixmap.loadFromData(QByteArray::fromBase64(imageData.toByteArray())); label->setPixmap(pixmap); } } tout marche bien, merci à tous mes lecteurs, polenord
  • Convertir projet x64 en ARM (Raspberry Pi)

    Unsolved
    16
    0 Votes
    16 Posts
    2k Views
    A
    @KroMignon @Ayckinn Bravo à toi, tu as réussi à finaliser ton projet! Merci ^^ Reste plus qu'à trouver un nouveau challenge ;) Hahaha, alors on se reverra :)
  • Récupérer données JSON d'une API météo

    Solved
    17
    0 Votes
    17 Posts
    3k Views
    SGaistS
    @KroMignon said in Récupérer données JSON d'une API météo: WindowsXP oblige!!!! Je compatis
  • Problème avec QRegExpValidator

    Solved
    4
    0 Votes
    4 Posts
    732 Views
    M
    Merci beaucoup pour votre aide et désolé pour le retard, j'ai formatais mon ordi à cause d'un virus
  • Icônes non visibles dans un QListView associé à un QFileSystemModel

    Unsolved
    8
    0 Votes
    8 Posts
    2k Views
    F
    @An-other-french désolé du temps de réponse, je n'avais pas vu qu'il y avait un nouveau message. C'est plutôt l'affichage des icones des fichiers qui ne s'affiche pas et ceci uniquement sur le bureau ou dans un répertoire descendant du bureau. Quand je parcours l'arborescence et que je reviens sur le bureau les icones n'apparaissent toujours pas.