[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