Skip to content

French

A forum for those speaking French

141 Topics 733 Posts
  • QT 6.3.0 QSQLDRIVER not loaded sur Mac

    Moved Unsolved
    2
    0 Votes
    2 Posts
    275 Views
    SGaistS

    Bonjour et bienvenu sur devnet,

    La langue officielle du forum est l'anglais mais il y a une section internationale avec un forum en français. Je vous recommande donc de poster sur celui-là.

    Ceci dit, vous êtes mal engagé car vous sembler suivre la documentation pour Qt 5 et il y a eu des changements dans Qt 6. L'usage de cmake par exemple en place de qmake.

  • probleme avec Qlist

    Unsolved
    3
    0 Votes
    3 Posts
    399 Views
    S

    problème résolu
    c'est encore plus bête!!

    en fait, la page de code commençait a charger un peu, et je n'ai même pas vu que mon code n'etait pas collé dans une fonction!
    idiot de moi...
    désolé...

  • Lecture base de donnée Access 2019 avec qt

    Moved Unsolved
    28
    0 Votes
    28 Posts
    2k Views
    L

    Bonjour,
    Je pense avoir une réponse à ce problème. Office professionnal 2019 ne fonctionne qu'avec la technologie click to run, ce qui est rédhibitoire pour utiliser les bases de données Access dans d'autres applications. Si vous connaissez une solution de contournement, merci de me l'indiquer.
    Merci une fois de plus de votre aide.

  • 0 Votes
    5 Posts
    630 Views
    G

    @SGaist Merci pour vos conseils à l'avenir , j'éviterai de faire ce genre d'erreur . Bonne fin de journée.

  • 0 Votes
    3 Posts
    366 Views
    F

    Merci, bien sûr.Mais j'y avais pas pensé.
    Bonne soirée

  • 0 Votes
    2 Posts
    546 Views
    AxelViennaA

    Bonjour,
    es-tu sûr que le jpg a la bonne taille et qu'il peut être affiché dans le QPushButton ?
    Voici une petite méthode pour mettre une icône à la bonne taille.
    Salutations de Vienne, où il fait froid, dans le lockdown.
    Axel

    QImage tint(QString icon, QColor color, qreal strength, int w, int h) { QImage src = QIcon(icon).pixmap(QSize(w,h)).toImage(); if(src.isNull()) return QImage(); QGraphicsScene scene; QGraphicsPixmapItem item; item.setPixmap(QPixmap::fromImage(src)); QGraphicsColorizeEffect effect; effect.setColor(color); effect.setStrength(strength); item.setGraphicsEffect(&effect); scene.addItem(&item); QImage res = src; QPainter ptr(&res); scene.render(&ptr, QRectF(), src.rect() ); return res; }
  • Signals et Slots entre objets de classes différentes

    Unsolved
    4
    0 Votes
    4 Posts
    360 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
    313 Views
    M

    C'était ça.

  • Drag & Drop d'un Widget

    Solved
    5
    0 Votes
    5 Posts
    679 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; }
  • 0 Votes
    30 Posts
    4k Views
    R

    @SGaist
    sorry sir, sorry for this message and i apologies

  • 0 Votes
    2 Posts
    316 Views
    SGaistS

    Hi,

    Do you realize that you created a new thread in the French sub forum asking for some code in English ?

  • 0 Votes
    1 Posts
    272 Views
    No one has replied
  • 0 Votes
    3 Posts
    476 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...
    screen

    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
    506 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
    589 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
    362 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
    507 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
    824 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
    712 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 ?