crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Вопрос по книге Жасмин Бланшет, Марк Саммерфилд - Qt 4. Программирование GUI на C++(2 издание)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ahalaj Дата 11.2.2015, 8:10
 
Цитата(zanac @ 10.2.2015, 9:31) *
В самом начале в книге показывают пример с возрастом и есть такие строчки:«здесь мы задаем расстояние между виджетами 6 пикселей». Но в примере ничего такого нет! Или расстояние задано неявно?

IMHO копипейст перевода аналогичной книги Жасмин Бланшет про Qt 3.0, там действительно было такое:

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

8    QHBox *hbox = new QHBox(0);
9    hbox->setCaption("Enter Your Age");
10    hbox->setMargin(6);
11    hbox->setSpacing(6);

12    QSpinBox *spinBox = new QSpinBox(hbox);
13    QSlider *slider = new QSlider(Qt::Horizontal, hbox);
14    spinBox->setRange(0, 130);
15    slider->setRange(0, 130);

    [...]

23    return app.exec();
24}

Lines 8 to 11 set up the QHBox. We call setCaption() to set the text displayed in the window’s title bar. Then we put some space (6 pixels) around and in between the child widgets. Lines 12 and 13 create a QSpinBox and a QSlider with the QHBox as the parent.


Вот "hbox->setMargin(6);" и "hbox->setSpacing(6);" как раз оно и есть. А в оригинальной книге Жасмин Бланшет про Qt 4.0 такого уже нет:

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

8     QWidget *window = new QWidget;
9     window->setWindowTitle("Enter Your Age");

10     QSpinBox *spinBox = new QSpinBox;
11     QSlider *slider = new QSlider(Qt::Horizontal);
12     spinBox->setRange(0, 130);
13     slider->setRange(0, 130);

    [...]
24     return app.exec();
25  }
                                          
Lines 8 and 9 set up the  QWidget that will serve as the application's main window. We call  setWindowTitle() to set the text displayed in the window's title bar. Lines 10 and 11 create a QSpinBox , and lines 12 and 13 set their valid ranges.


Переводчику видать лениво было переводить занова, он использовал уже готовый перевод про Qt 3 и просто попытался поменять некоторые места, которые в книге про Qt 4 изменились, да не все заметил.

Я всегда говорил, говорю и буду говорить: читайте книжки в оригинале (благо английский это не китайский и не японский, на уровне чтения его выучить -- ну неделя, максимум две), в переводной документации ещё не такие ляпы бывают.
zanac Дата 10.2.2015, 9:31
  В самом начале в книге показывают пример с возрастом и есть такие строчки:«здесь мы задаем расстояние между виджетами 6 пикселей». Но в примере ничего такого нет! Или расстояние задано неявно? Код примера :

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

QWidget *window = new QWidget;
window->setWindowTitle("Enter Your Age");

QSpinBox *spinBox = new QSpinBox;
QSlider *slider = new QSlider(Qt::Horizontal);
spinBox->setRange(0, 130);
slider->setRange(0, 130);

QObject::connect(spinBox, SIGNAL(valueChanged(int)),
slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)),
spinBox, SLOT(setValue(int)));
spinBox->setValue(35);

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);

window->show();

return app.exec();
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 23.4.2024, 11:55