Добавление метки в виджет - PullRequest
3 голосов
/ 20 апреля 2011

Я пытаюсь добавить метку в главное окно, используя 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 s к QWidget s, я пытался установить Main_Windowв качестве основного виджета с использованием этого метода: app.setMainWidget(Main_Window) и метка все еще была за окном.Итак, как мне поместить метки в виджеты, используя Qt?

Ответы [ 3 ]

7 голосов
/ 20 апреля 2011

хамза, у меня этот код работал нормально:

#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 голос
/ 20 апреля 2011

Добавьте метку в виджет макета и установите макет окна для этого макета.

Примечание разработчика: лучше создать свой собственный класс MainWindow, например, наследуя от QMainWindow, и спроектировать его изнутри.

или даже лучше, используйте QtCreator.

0 голосов
/ 29 марта 2018

Вы можете попробовать:

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();

таким образом, вы даже можете решить, куда поместить этикетку и выбрать размер изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...