2016-10-25 2 views
-3

У меня есть Combobox (Control 2.0). Я пишу мой собственные выпадающее какВсплывающее окно Combobox открыто прозрачно

Rectangle 
{ 
    border.width: 1 
    border.color: "lightsteelblue" 
    height:dp(40) 
    width: parent.width 

    ComboBox { 
     id:tmCombo 
     model:combotm.datalist 
     textRole: "value" 
     anchors.fill: parent 
     currentIndex:-1; 

     contentItem: Text { 
      leftPadding: 0 
      rightPadding: tmCombo.indicator.width + tmCombo.spacing 

      text:tmCombo.currentIndex==-1 ? "":tmCombo.model[tmCombo.currentIndex].value 
      font: tmCombo.font 
      horizontalAlignment: Text.AlignLeft 
      verticalAlignment: Text.AlignVCenter 
      elide: Text.ElideRight 
     } 

     onCurrentIndexChanged: { 

      if(currentIndex!=-1) { 
       var sqlid=model[currentIndex].sqlid; 
       combotm.getsqlid(sqlid,1,Query.SelectSubParam,Query.Subq,"TMC",1); 
       TaskResult.taskresult.HatBilgisi_TM=sqlid; 
       tmsCombo.enabled=true;   
      } 
      else { 
       tmsCombo.enabled=false; 
      } 
      tmsCombo.currentIndex=-1; 
     } 


    } 


} 

Моей проблема заключается в том, что, когда выпадающие первой открытой, половина всплывающего окна является прозрачной. Затем я снова закрываю и открываю поле со списком. Все в порядке. Я работаю на платформе Android.

РЕШЕНИЕ: Я добавил импорта QtQuick.Templates 2.0, как T и шанс Popup с T.Popup. Это работа

+0

ReferenceError: dp, combotm не определен. Минимальный пример для работы, который исходит из коробки и иллюстрирует вашу проблему, будет приятным. – derM

+0

@derM, dp и combotm определяется где-то. Я не добавляю весь код –

+1

Да, и никто не хочет писать для вас весь таинственный код, просто попробуйте ваш пример. Поэтому, чтобы обеспечить минимальный пример, вы выбрасываете все подключения к «файлу, определенному где-то в другом месте», что он исчерпан из коробки и все еще иллюстрирует вашу проблему. Для получения дополнительной информации, пожалуйста, прочтите: http://stackoverflow.com/help/mcve – derM

ответ

0

Код вставки: Combobox с входным фильтром :) У меня есть привязанная модель от C++ с Q_Property. Функция dp - это моя глобальная функция в main.qml, которая является фиксированным пикселем для любого устройства.

ComboBox { 
       id:trCombo 
       model:combotr.datalist 
       textRole: "value" 
       anchors.fill: parent 
       currentIndex:-1; 



       contentItem: Text { 
        leftPadding: 0 
        rightPadding: trCombo.indicator.width + trCombo.spacing 

        text:trCombo.currentIndex==-1 ? "":trCombo.model[trCombo.currentIndex].value 
        font: trCombo.font 
        horizontalAlignment: Text.AlignLeft 
        verticalAlignment: Text.AlignVCenter 
        elide: Text.ElideRight 
       } 

       popup: T.Popup { 
        id:mpopup 
        y: trCombo.height - (trCombo.visualFocus ? 0 : 1) 

        width: trCombo.width 
        implicitHeight: listview.contentHeight 
        topMargin: 6 
        bottomMargin: 6 

       // focus: true 
        closePolicy: Popup.NoAutoClose 

        contentItem: Item { 


         Column 
         { 
         anchors.fill: parent 
         spacing: 5 
         TextField 
         { 

         placeholderText: "arama yapın" 
         width: trCombo.width 
         height: dp(35) 
        // color: "red" 
         focus:true 
         inputMethodHints: Qt.ImhNoPredictiveText; 

         onTextChanged:{ 
          //console.log("degisiyor"); 
          process.filtertr(text); 
         } 

         onAccepted:{ 
         // console.log("Tasarım Bitti"); 
          isfinished(true); 
         // text=""; 


         } 




         } 

         ListView { 
         id: listview 
         clip: true 
         model: trCombo.popup.visible ? trCombo.delegateModel : null 
         currentIndex: trCombo.highlightedIndex 
         width: trCombo.width 
         height:dp(500) 


         Rectangle { 



          z: 10 
          parent: listview 
          width: listview.width 
          height: listview.height 
          color: "transparent" 
          border.color: "#bdbebf" 
          layer.smooth: true 
         } 

         ScrollIndicator.vertical: ScrollIndicator { } 
        } 

        } 
       } 

        background: Rectangle { } 

        onClosed: { 
        if(!flag) 
        { 
         mpopup.open(); 
        } 

        else 
        flag=false; 
        } 


       } 


       delegate: ItemDelegate { 
        width: trCombo.width 
        text: trCombo.textRole ? (Array.isArray(trCombo.model) ? modelData[trCombo.textRole] : model[trCombo.textRole]) : modelData 
        font.weight: trCombo.currentIndex === index ? Font.DemiBold : Font.Normal 
        highlighted: trCombo.highlightedIndex == index 

        onClicked: { 
         isfinished(true); 
        } 
       } 



       onCurrentIndexChanged: { 

        if(currentIndex!=-1) 
        { 
         var sqlid=model[currentIndex].sqlid; 
         combotr.getsqlid(sqlid,1,Query.SelectSubParam,Query.Subq,"TRC",1); 
         TaskResult.taskresult.HatBilgisi_TR=sqlid ; 
         trsCombo.enabled=true; 


        } 

        else 
         trsCombo.enabled=false; 

        trsCombo.currentIndex=-1; 
       } 


     }