vertical que horizontal función desplazamiento descripcion cuál barra c++ qt qscrollarea

c++ - que - excel barra de desplazamiento



QScrollArea barra de desplazamiento faltante (1)

No desea configurar el diseño en el área de desplazamiento. La respuesta que citas proviene de entender mal esto.

  1. Necesita tener un widget dentro de una scrollarea, y pasar ese widget al área usando QScrollArea::setWidget . Si todo lo que tiene dentro del área de desplazamiento es un widget sin elementos secundarios, entonces no necesita diseño adicional.

  2. No necesita realizar un seguimiento manual de los widgets que son propiedad de un diseño. Se eliminarán automáticamente una vez que se elimine el widget que tiene el diseño.

  3. El widget QScrollArea no se presenta dentro de su widget adjunto.

A continuación se muestra un ejemplo práctico de cómo hacerlo:

// https://github.com/KubaO/stackoverflown/tree/master/questions/scroll-18703286 #include <QScrollArea> #include <QVBoxLayout> #include <QSpinBox> #include <QApplication> class Window : public QWidget { QVBoxLayout m_layout{this}; QScrollArea m_area; QWidget m_contents; QVBoxLayout m_contentsLayout{&m_contents}; QSpinBox m_spinBoxes[10]; public: Window(QWidget *parent = {}) : QWidget(parent) { m_layout.addWidget(&m_area); m_area.setWidget(&m_contents); for (auto & spinbox : m_spinBoxes) m_contentsLayout.addWidget(&spinbox); m_contentsLayout.setSizeConstraint(QLayout::SetMinimumSize); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); Window w; w.show(); return app.exec(); }

Creo que es el mismo problema que: QScrollArea cambiar el tamaño de QWidget

pero no hay solución así que déjame exponer el problema.

  • prueba 2 heredada de QWidget:
    • compuesto :
      • vector de QSpinBox
      • QScrollArea
      • QVBoxLayout
    • test2 (QWidget) <- QScrollArea <- QVBoxLayout <- Spinbox
  • Problemas :
    • No hay barra de desplazamiento
    • [FIJO] El interior de la barra de desplazamiento se reduce para adaptarse a tan poco espacio que no se puede leer nada (la ventana puede redimensionarse durante la ejecución, lo que hará que el interior crezca y sea legible, sin embargo, no aparecerá ninguna barra de desplazamiento)

Creo que los problemas provienen de una sola fuente :: Sugerencias y diseños de tamaño ( http://qt-project.org/doc/qt-5.1/qtwidgets/qscrollarea.html#details )

El segundo problema (artilugio contraído) puede resolverse configurando "c-> setSizeConstraint (QLayout :: SetMinimumSize);"

Actualmente estoy buscando una solución para la barra de desplazamiento que falta

aquí hay un código que muestra mi problema:

<c++> #include <QWidget> #include <QScrollArea> #include <QVBoxLayout> #include <QSpinBox> class test2 : public QWidget { Q_OBJECT public: test2(QWidget *parent = 0) :QWidget(parent) { b = new QScrollArea(this); c = new QVBoxLayout; for (int i = 0; i < 10; i++) { a.push_back(new QSpinBox()); c->addWidget(a[i]); } c->setSizeConstraint(QLayout::SetMinimumSize); b->setLayout(c); b->resize(200, 200); } ~test2() { for (int i = 0; i < 10; i++) delete a[i]; } protected: QVector<QSpinBox*> a; QScrollArea* b; QVBoxLayout* c; }; int main(int argc, char *argv[]) { ///* QApplication app(argc, argv); test2 a; a.show(); return app.exec();//*/ }

EDIT :: encontró una Solución aquí: http://qt-project.org/forums/viewthread/295

si no quieres leer una gran cantidad de código inútil aquí lo que ha hecho :: ha deformado el diseño dentro de un widget

Solución :: hereda el objeto de ScrollBar <- Widget <- Layout

en lugar de widget <- ScrollBar <- Layout

pero realmente no es una solución ... voy a probar el ejemplo que di.

funciona. Alguien tiene una solución mejor ??