Russian Qt Forum
Ноябрь 24, 2024, 19:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ComboBox  (Прочитано 7275 раз)
Sahsa
Гость
« : Июнь 24, 2016, 14:24 »

Всем Привет.
У меня такой вопрос. Я создаю форму с QComboBox и хочу в дальнейшем ее пополнять через слот, но у меня не добавляется элемент.
Если делать в конструкторе, то все хорошо.
Вот код:
TableDialog::TableDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::TableDialog)
{
    ui->setupUi(this);

    ui->comboBox->addItem("Первый"); // Это для проверки
    ui->comboBox->addItem("Второй");  // Это для проверки
}

void TableDialog::addItemTableDialog(QString str)
{
    ui->comboBox->addItem(str); // <-- не хочет добавлять в конец списка =(((
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Июнь 24, 2016, 14:50 »

Используйте форматирование кода.
Код вроде бы правильный.
Метод addItemTableDialog вообще вызывается?
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июнь 24, 2016, 14:55 »

этот метод объявлен как слот?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #3 : Июнь 24, 2016, 15:15 »

Полный код и тогда всё станет ясно.
Записан
Sahsa
Гость
« Ответ #4 : Июнь 24, 2016, 16:23 »

этот метод объявлен как слот?

Да)
Записан
Sahsa
Гость
« Ответ #5 : Июнь 24, 2016, 16:26 »

Полный код и тогда всё станет ясно.

Код:
namespace Ui {
class TableDialog;
}

class TableDialog : public QDialog
{
    Q_OBJECT

public:
    explicit TableDialog(QWidget *parent = 0);
    ~TableDialog();

private:
    Ui::TableDialog *ui;

private slots:
    void addItemTableDialog(const QString &str);
};
+ прошлое
Записан
Sahsa
Гость
« Ответ #6 : Июнь 24, 2016, 16:31 »

Используйте форматирование кода.
Код вроде бы правильный.
Метод addItemTableDialog вообще вызывается?

Не совсем понимаю последний вопрос(
Записан
Bepec
Гость
« Ответ #7 : Июнь 24, 2016, 16:37 »

У вас нет вызова слота addItemTableDialog.
Т.е. он никогда не вызывается и следственно не выполняется.

Если вы связываете в ui файле, то предоставьте ui файл Улыбающийся Он тоже входит в понятие полного кода Улыбающийся
Записан
Sahsa
Гость
« Ответ #8 : Июнь 24, 2016, 18:42 »

У вас нет вызова слота addItemTableDialog.
Т.е. он никогда не вызывается и следственно не выполняется.

Если вы связываете в ui файле, то предоставьте ui файл Улыбающийся Он тоже входит в понятие полного кода Улыбающийся

Код:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>TableDialog</class>
 <widget class="QDialog" name="TableDialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>485</width>
    <height>85</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <layout class="QVBoxLayout" name="verticalLayout">
     <item>
      <widget class="QComboBox" name="comboBox">
       <property name="minimumSize">
        <size>
         <width>50</width>
         <height>25</height>
        </size>
       </property>
       <property name="maximumSize">
        <size>
         <width>16777215</width>
         <height>25</height>
        </size>
       </property>
       <property name="insertPolicy">
        <enum>QComboBox::InsertAtCurrent</enum>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QDialogButtonBox" name="buttonBox">
       <property name="orientation">
        <enum>Qt::Horizontal</enum>
       </property>
       <property name="standardButtons">
        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
       </property>
      </widget>
     </item>
    </layout>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>TableDialog</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>TableDialog</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>

Записан
Bepec
Гость
« Ответ #9 : Июнь 24, 2016, 19:20 »

У вас в коде НИГДЕ не вызывается данный слот. Вообще нигде.
Чтобы он сработал, его нужно вызвать или связать с каким-либо сигналом.
Сам по себе он работать не будет.

Это как кнопка - она есть, но её нужно нажать Улыбающийся
Записан
Sahsa
Гость
« Ответ #10 : Июнь 24, 2016, 19:25 »

У вас в коде НИГДЕ не вызывается данный слот. Вообще нигде.
Чтобы он сработал, его нужно вызвать или связать с каким-либо сигналом.
Сам по себе он работать не будет.

Это как кнопка - она есть, но её нужно нажать Улыбающийся

слот связон с другим классом и он вызывается, я запускал по шагам)
Записан
Bepec
Гость
« Ответ #11 : Июнь 24, 2016, 19:27 »

Если он вызывается, значит срабатывает. А как вы определяете что он не работает? Улыбающийся

PS полный код - это полный код, со всеми классами, файлами, ресурсами, файлом проекта. Который позволяет узнать такие вот "другой класс" подробности, не переписываясь Улыбающийся

PPS наличие полного кода в архиве с файлом проекта гарантирует вам помощь в кратчайшие сроки Улыбающийся А всё остальное - заслуга телепатии и лукавого Веселый
Записан
Sahsa
Гость
« Ответ #12 : Июнь 24, 2016, 19:31 »

Если он вызывается, значит срабатывает. А как вы определяете что он не работает? Улыбающийся

PS полный код - это полный код, со всеми классами, файлами, ресурсами, файлом проекта. Который позволяет узнать такие вот "другой класс" подробности, не переписываясь Улыбающийся

там все хорошо, передается строка и она принимается. Дополнительно делал список и заполнял его, так список заполняется (QStringList), а самом ComboBox нечего не идет. Если все в конструкторе создать, то тогда отлично, но мне нужно его пополнять в течении выполнения программы.
Записан
Sahsa
Гость
« Ответ #13 : Июнь 24, 2016, 19:40 »

Если он вызывается, значит срабатывает. А как вы определяете что он не работает? Улыбающийся

PS полный код - это полный код, со всеми классами, файлами, ресурсами, файлом проекта. Который позволяет узнать такие вот "другой класс" подробности, не переписываясь Улыбающийся

PPS наличие полного кода в архиве с файлом проекта гарантирует вам помощь в кратчайшие сроки Улыбающийся А всё остальное - заслуга телепатии и лукавого Веселый

Дополнительно проверил сейчас и вставил в слот дополнительный код
Код:
void TableDialog::addItemTableDialog(QString str)
{
    ui->comboBox->addItem(str);
    QFile file("C:/log.txt");
    QTextStream out(&file);
    if (file.open(QIODevice::WriteOnly)) {
        //file.write(str);
        out<<"OK: " <<str;
    }
    file.close();
}

Так вот, в файл он все записывает мне, а вот строку в ComboBox не добавляет
Записан
Bepec
Гость
« Ответ #14 : Июнь 24, 2016, 19:53 »

PPS наличие полного кода в архиве с файлом проекта гарантирует вам помощь в кратчайшие сроки Улыбающийся А всё остальное - заслуга телепатии и лукавого Веселый
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 23.