[Qt-interest] Forcing a lineedit widget to be large enough inside a toolbar.
phil prentice
philp.cheer at talktalk.net
Mon Oct 11 13:29:00 CEST 2010
Hi
I am trying to force a linedit box inside of a toolbar to automatically be
large enough to show up to 17 characters. When I run this the text box only
shows 15 characters. If I increase setFixedWidth to be 25 rather then 17 I
still get the same result. Obviously I can move the separators to increase
the size, but how can I make this happen automatically.
Is what I am doing just not possible, or is there some other trick that I
need to do.
Thankyou for your time
Phil
A cut down version of the code is as follows.
#include <QApplication>
#include <QtGui>
class MainWindow : public QMainWindow
{
public:
MainWindow( QWidget* parent = NULL )
: QMainWindow( parent )
{
m_networkLabel = new QLabel("Network ");
m_networkLineEdit = new QLineEdit();
// Set attributes.
m_networkLineEdit->setReadOnly(true);
m_networkLineEdit->setMaxLength(17); /* Allow max of 17 characters. */
m_frequencyLineEdit = new QLineEdit();
// Set attributes.
m_frequencyLineEdit->setReadOnly(true);
m_frequencyLineEdit->setMaxLength(6); /* Allow max of 6 characters. */
m_frequencyLineEdit->setFixedWidth(
m_frequencyLineEdit->fontMetrics().width("1500Hz") +20); // 1500Hz
m_voltMinus = new QAction(this);
//m_voltMinus->setIcon(QIcon(":/resources/images/V-.png"));
m_voltMinus->setIcon(QIcon());
m_voltPlus = new QAction(this);
m_voltPlus->setIcon(QIcon());
m_freqMinus = new QAction(this);
m_freqMinus->setIcon(QIcon());
m_freqPlus = new QAction(this);
m_freqPlus->setIcon(QIcon());
m_pulseVoltMinus = new QAction(this);
m_pulseVoltMinus->setIcon(QIcon());
m_pulseVoltPlus = new QAction(this);
m_pulseVoltPlus->setIcon(QIcon());
m_pulseWidthMinus = new QAction(this);
m_pulseWidthMinus->setIcon(QIcon());
m_pulseWidthPlus = new QAction(this);
m_pulseWidthPlus->setIcon(QIcon());
m_pcToleranceMinus10 = new QAction(this);
m_pcToleranceMinus10->setIcon(QIcon());
m_pcToleranceMinus1 = new QAction(this);
m_pcToleranceMinus1->setIcon(QIcon());
m_pcToleranceEnable = new QAction(this);
m_pcToleranceEnable->setIcon(QIcon());
m_pcTolerancePlus1 = new QAction(this);
m_pcTolerancePlus1->setIcon(QIcon());
m_pcTolerancePlus10 = new QAction(this);
m_pcTolerancePlus10->setIcon(QIcon());
QSize size(32,32);
m_networkIdToolBar = addToolBar("");
m_networkIdToolBar->addWidget(m_networkLabel);
m_networkIdToolBar->addWidget(m_networkLineEdit);
m_saveAction = new QAction("&Save", this);
m_saveAction->setIcon(QIcon());
m_saveToolBar = addToolBar("");
m_voltFreqToolBar = addToolBar("");
m_voltFreqToolBar->addAction(m_voltMinus);
m_voltFreqToolBar->addAction(m_voltPlus);
m_voltFreqToolBar->addSeparator();
m_voltFreqToolBar->addAction(m_freqMinus);
m_voltFreqToolBar->addAction(m_freqPlus);
m_voltFreqToolBar->setIconSize(size);
m_pulseToolBar = addToolBar("");
m_pulseToolBar->addAction(m_pulseVoltMinus);
m_pulseToolBar->addAction(m_pulseVoltPlus);
m_pulseToolBar->addSeparator();
m_pulseToolBar->addAction(m_pulseWidthMinus);
m_pulseToolBar->addAction(m_pulseWidthPlus);
m_pulseToolBar->setIconSize(size);
m_toleranceToolBar = addToolBar("");
m_toleranceToolBar->addAction(m_pcToleranceMinus10);
m_toleranceToolBar->addAction(m_pcToleranceMinus1);
m_toleranceToolBar->addSeparator();
m_toleranceToolBar->addAction(m_pcToleranceEnable);
m_toleranceToolBar->addSeparator();
m_toleranceToolBar->addAction(m_pcTolerancePlus1);
m_toleranceToolBar->addAction(m_pcTolerancePlus10);
m_toleranceToolBar->setIconSize(size);
m_frequencyToolBar = addToolBar("");
m_frequencyToolBar->addWidget(m_frequencyLineEdit);
}
void foo()
{
m_networkLineEdit->setFixedWidth( 17 *
m_networkLineEdit->fontMetrics().maxWidth() + 20);
m_networkLineEdit->setText("ZZZZZZZZZZZZZZZZZ");
}
private:
QToolBar *m_frequencyToolBar;
QToolBar *m_networkIdToolBar;
QToolBar *m_saveToolBar;
QToolBar *m_voltFreqToolBar;
QToolBar *m_pulseToolBar;
QToolBar *m_toleranceToolBar;
QAction *m_saveAction;
QAction *m_voltMinus;
QAction *m_voltPlus;
QAction *m_freqMinus;
QAction *m_freqPlus;
QAction *m_pulseVoltMinus;
QAction *m_pulseVoltPlus;
QAction *m_pulseWidthMinus;
QAction *m_pulseWidthPlus;
QAction *m_pcToleranceMinus10;
QAction *m_pcToleranceMinus1;
QAction *m_pcToleranceEnable;
QAction *m_pcTolerancePlus1;
QAction *m_pcTolerancePlus10;
QLineEdit* m_networkLineEdit;
QLabel *m_networkLabel;
QLineEdit *m_frequencyLineEdit;
};
int main( int argc, char* argv[] )
{
QApplication app( argc, argv );
MainWindow mw;
mw.resize(QSize(1260, 560));
mw.show();
mw.foo();
return app.exec();
}
More information about the Qt-interest-old
mailing list