es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El widget central de QT no aparece.

Tengo un problema con la visualización de setCentralWidget().
Aquí está el constructor de la ventana principal:

MW_MusicRenamerApp::MW_MusicRenamerApp(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MW_MusicRenamerApp)
{
    //Configuración de la ventana principal
    //Utilizando funciones para configurar, establecer y cambiar partes de la ventana principal
    addToolBar(Qt::RightToolBarArea, createRightToolBar());
    setCentralWidget(createCentralWidget());

    ui->setupUi(this);//por el momento de escribir esto, no sé qué es esto, así que no lo elimines
}

Aquí está la creación del widget central:

QWidget *MW_MusicRenamerApp::createCentralWidget()
{
    QWidget *centralWgt = new QWidget(); //este será el que se devuelva

    //Creación de la parte izquierda del widget central
    QStringListModel *strlm_fileNames = new QStringListModel(m_strl_fileNames_temp, 0);
    QListView *lv_fileNames = new QListView();
    lv_fileNames->setModel(strlm_fileNames);
    //Creación de la parte derecha del widget central
    QStringListModel *strlm_temp = new  QStringListModel(m_strl_fileNames_temp, 0);
    QListView *lv_renamingResult = new QListView();
    lv_renamingResult->setModel(strlm_temp);

    //Configuración del diseño
    QHBoxLayout *hbxl_centralWgtLayout = new QHBoxLayout();
    hbxl_centralWgtLayout->addWidget(lv_fileNames);
    hbxl_centralWgtLayout->addWidget(lv_renamingResult);

    centralWgt->setLayout(hbxl_centralWgtLayout);
    centralWgt->show(); //¿Realmente necesito esto?

    return centralWgt;
}

Entonces, cuando ejecuto mi programa, el widget central no aparece, incluso si intento establecer QPushButton como widget central, como esto:

QPushButton *temp_btn = new QPushButton("UN GRAN BOTÓN");
setCentralWidget(temp_btn):

o así:

setCentralWidget(new QPushButton("UN GRAN BOTÓN"));

¿Qué estoy haciendo mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en el diseño del widget central. En la función createCentralWidget(), has creado un diseño horizontal y has añadido dos widgets QListView a él. Sin embargo, no has especificado ningún tamaño para los widgets QListView, lo que podría estar causando que se oculten o no se muestren correctamente.

    Una solución podría ser establecer un tamaño específico para los widgets QListView utilizando la función setFixedSize(), o establecer sus tamaños mínimo y máximo. Alternativamente, puedes intentar agregar espaciadores al diseño para corregir los tamaños de los widgets, o utilizar diseños anidados para controlar mejor la ubicación de los widgets.

    Además, puedes intentar añadir algunas instrucciones de salida de depuración a tu código para ver si el widget central realmente se está estableciendo y mostrando. Por ejemplo, puedes agregar una instrucción qDebug() después de establecer el widget central para comprobar si se está mostrando o no:

    setCentralWidget(createCentralWidget());
    qDebug() << "Widget central establecido";
    

    Espero que estas sugerencias te ayuden a identificar y solucionar el problema con tu setCentralWidget() para que se muestre correctamente.

Comments are closed.