向窗口小部件添加标签

时间:2011-04-20 17:25:23

标签: c++ qt

我正在尝试使用Qt向主窗口添加标签。这是一段代码:

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget Main_Window;
    QPixmap Image;

    Image.load("1837.jpg");

    QLabel i_label;
    i_label.setPixmap(Image);
    i_label.show();

    QPushButton Bu_Quit("Quit", &Main_Window);

    QObject::connect(&Bu_Quit, SIGNAL(clicked()), qApp, SLOT(quit()));

    Main_Window.show();
    return app.exec();
}

我一直很难弄清楚如何正确地将QLabel添加到QWidget,我尝试使用此方法将Main_Window设置为主要小部件: app.setMainWidget(Main_Window),标签仍在窗外。那么如何使用Qt将标签放入小部件?

3 个答案:

答案 0 :(得分:7)

hamza,这段代码对我来说很好:

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget Main_Window;

    QLabel i_label("Start", &Main_Window);
    //i_label.setPixmap(QPixmap("1837.jpg"));

    QPushButton Bu_Quit("Quit" , &Main_Window);
    QObject::connect(&Bu_Quit , SIGNAL(clicked()), qApp , SLOT(quit()));

    QVBoxLayout *vbl = new QVBoxLayout(&Main_Window);
    vbl->addWidget(&i_label);
    vbl->addWidget(&Bu_Quit);

    Main_Window.show();

    return app.exec();
}

我评论设置图像代码以显示标签设置正确。确保您的图像有效(否则您将看不到文本)。这里的诀窍是你需要使用qt布局,如QVBoxLayout

答案 1 :(得分:1)

将标签添加到布局窗口小部件,并将窗口布局设置为该布局。

设计说明:最好创建自己的MainWindow类,例如继承自QMainWindow,并从内部进行设计。

甚至更好,请使用QtCreator

答案 2 :(得分:0)

您可以尝试:

QWidget window;

QImage image("yourImage.png");
QImage newImage = image.scaled(150, 150, Qt::KeepAspectRatio);
QLabel label("label", &window);
label.setGeometry(100, 100, 100, 100);
label.setPixmap(QPixmap::fromImage(newImage));

window.show();

这样你甚至可以决定放置标签的位置并选择图像尺寸。