Qt

2016-04-13 49 views
1

'daki etiketlerin listesini kaydırma Etiketlerim için kaydırma çubuğu oluşturmaya çalışıyorum. Şimdilik, kullanıcılar çok fazla etiket oluşturuyorsa, tuşun ve metin alanının boyutları küçülüyor, bu yüzden kaydırma çubuğu oluşturmak istedim. Çok fazla etiket varsa, pencerenin yönünü değiştirmeyecekler. .Qt

Bu benim gerçek kodudur:

#include <iostream> 
#include <QApplication> 
#include <QPushButton> 
#include <QLineEdit> 
#include <QWidget> 
#include <QFormLayout> 
#include "LibQt.hpp" 

LibQt::LibQt() : QWidget() 
{ 
    this->size_x = 500; 
    this->size_y = 500; 
    QWidget::setWindowTitle("The Plazza"); 
    setFixedSize(this->size_x, this->size_y); 
    manageOrder(); 
} 

LibQt::~LibQt() 
{ 
} 

void LibQt::keyPressEvent(QKeyEvent* event) 
{ 
    if (event->key() == Qt::Key_Escape) 
    QCoreApplication::quit(); 
    else 
    QWidget::keyPressEvent(event); 
} 

void LibQt::manageOrder() 
{ 
    this->converLayout = new QFormLayout; 
    this->testline = new QLineEdit; 
    this->m_button = new QPushButton("Send"); 
    this->m_button->setCursor(Qt::PointingHandCursor); 
    this->m_button->setFont(QFont("Comic Sans MS", 14)); 
    this->converLayout->addRow("Order : ", this->testline); 
    this->converLayout->addWidget(this->m_button); 
    QObject::connect(m_button, SIGNAL(clicked()), this, SLOT(ClearAndGetTxt())); 
    CreateLabel("test"); 
    CreateLabel("test2"); 
} 

void   LibQt::CreateLabel(std::string text) 
{ 
    QString qstr = QString::fromStdString(text); 

    this->label = new QLabel(qstr); 
    this->converLayout->addWidget(this->label); 
    this->setLayout(converLayout); 
} 

std::string  LibQt::ClearAndGetTxt() 
{ 
    QString txt = this->testline->text(); 

    if (!txt.isEmpty()) 
    { 
     this->usertxt = txt.toStdString(); 
     std::cout << this->usertxt << std::endl; 
     this->testline->clear(); 
     CreateLabel(this->usertxt); 
     return (this->usertxt); 
    } 
    return (this->usertxt); 
} 

std::string  LibQt::getUsertxt() 
{ 
    return (this->usertxt); 
} 

Ve bu .hpp geçerli:

#ifndef _LIBQT_HPP_ 
#define _LIBQT_HPP_ 

#include <QApplication> 
#include <QWidget> 
#include <QPushButton> 
#include <QFormLayout> 
#include <QLabel> 
#include <QLineEdit> 
#include <QKeyEvent> 

class LibQt : public QWidget 
{ 
    Q_OBJECT 

public: 
    LibQt(); 
    ~LibQt(); 
    void manageOrder(); 
    std::string getUsertxt(); 
    void keyPressEvent(QKeyEvent *event); 
    void keyPressEventEnter(QKeyEvent *event); 
    void CreateLabel(std::string text); 
public slots: 
    std::string ClearAndGetTxt(); 
protected: 
    int size_x; 
    int size_y; 
    QPushButton *m_button; 
    QLineEdit *testline; 
    std::string usertxt; 
    QLabel *label; 
    QFormLayout *converLayout; 
}; 

#endif /* _LIBQT_HPP_ */ 

cevap

1

kesin olarak

  1. QTextEdit istiyorsun bağlı olarak farklı çözümler vardır kaydırılabilir metin için Qt parçacık sınıfıdır. Metin etkileşim bayrakları, çerçeve stili ve unsetting arka plan rengini kapattığınızda temelde bir qscrollarea yaparsanız, alır

+0

kesin olarak mı daha genel bir çözüm olarak kaydırılabilir QLabel

  • QScrollArea alacak bütün rüyalarımWere widget'lar ve qscrollarea benim düzenimde olması gerekiyor mu? – Michael003

  • +1

    @ Michael003, şunları yapmanız gerekir: 1. widget'ınızın içine kaydırma alanı koyun 2. kaydırılabilir pencere öğesi oluşturmak 3. [set] (http://doc.qt.io/qt-4.8/qscrollarea.html#setWidget) kaydırılabilir widget 4 kaydırılabilir küçük aracın içine çocuk widget'ları koymak –