我正在使用QGridLayout,第一行有一個QLabel,用來顯示一個設定為32x32像素的圖示。 下一行有兩個QSvgWidgets,每個都是16x14。
我的代碼:
QGridLayout* pgrdloStatus(new QGridLayout)。
if ( mplblStsIcon == nullptr )
{
mplblStsIcon = new QLabel( ) 。
}
if ( mpsvgRxIcon == nullptr )
{
mpsvgRxIcon = new QSvgWidget(":/SVG_LED") 。
mpsvgRxIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed) 。
mpsvgRxIcon->setFixedSize(TraineeMonitor::mscuintCommsIconWidth,
TraineeMonitor::mscuintCommsIconHeight)。)
}
if ( mpsvgTxIcon == nullptr )
{
mpsvgTxIcon = new QSvgWidget(":/SVG_LED"/span>)。
mpsvgTxIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)。
mpsvgTxIcon->setFixedSize(TraineeMonitor::mscuintCommsIconWidth,
TraineeMonitor::mscuintCommsIconHeight)。)
}
const QString cstrToolTip(QString(
" %1: %2
%3: %4")
.arg(tr("Hostname:")) .arg(mstrHostname)
.arg(tr("MAC address:")).arg(mstrMACaddress))。
mplblStsIcon->setToolTip(cstrToolTip)。
pgrdloStatus-> addWidget(mplblStsIcon, 0, 0, 1, 2, Qt: :AlignHCenter)。)
pgrdloStatus->addWidget(mpsvgRxIcon, 1, 0, Qt::AlignLeft) 。
pgrdloStatus->addWidget(mpsvgTxIcon, 1, 1, Qt::AlignRight);
pgrdloStatus->setMargin(0)。
pgrdloStatus->setSpacing(0)。
return pgrdloStatus。
結果。
我實際想要的是

uj5u.com熱心網友回復:
我創建了這個例子,并從設計器中添加了專案,以告訴你為什么你會看到圖示之間的距離。
我創建了GridLayout并放置了2個標簽并設定了2個LED SVG影像
這實際上也是你所做的:但是為了解決這個問題,你應該檢查這個屬性 :
這意味著: label->setScaledContents(true);
這意味著你的圖示與標簽相匹配。
對于移除GridLay out的邊距,你也可以這樣做:
這是其代碼:
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>/span>
#include <QtWidgets/QApplication>/span>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QWidget>/span>
qt_begin_namespace
class Ui_MainWindow
{
public:
QWidget *centralwidget;
QGridLayout *gridLayout;
QLabel *label;
QLabel *label_2;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty()
MainWindow->setObjectName(QString::fromUtf8("MainWindow") )。
MainWindow->resize(207, 109) 。
centralwidget = new QWidget(MainWindow)。
centralwidget->setObjectName(QString::fromUtf8("Centralwidget"))。
gridLayout = new QGridLayout(centralwidget)。
gridLayout->setSpacing(0)。
gridLayout->setObjectName(QString::fromUtf8("gridLayout") )。
gridLayout->setContentsMargins(0, 0, 0, 0) 。
label = new QLabel(centralwidget)。
label->setObjectName(QString::fromUtf8("label")) 。
label->setPixmap(QPixmap(QString::fromUtf8(" : /icons/led-square-red. svg"))。)
label->setScaledContents(true)。
gridLayout->addWidget(label, 0, 0, 1, 1) 。
label_2 = new QLabel(centralwidget)。
label_2->setObjectName(QString::fromUtf8(" label_2"))。
label_2->setPixmap(QPixmap(QString::fromUtf8(" : /icons/led-square-red. svg"))。)
label_2->setScaledContents(true)。
gridLayout->addWidget(label_2, 0, 1, 1, 1) 。
MainWindow->setCentralWidget(centralwidget)。
retranslateUi(MainWindow)。
QMetaObject::connectSlotsByName(MainWindow)。
} //setupUi //setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QCoreApplication:: translate("MainWindow", "MainWindow", nullptr))。)
label->setText(QString)。
label_2->setText(QString()) 。
} // retranslateUinamespace Ui {
class MainWindow。public Ui_MainWindow {};
} //namespace Ui.
qt_end_namespace
#endif // UI_MAINWINDOW_H
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/310179.html
標籤:



