在具有多个选项卡小部件层的小部件中处理选项卡顺序

时间:2018-09-08 21:59:24

标签: qt tabs

我正在尝试使用QT创建器为QgIS构建插件。该插件混合了不同的表单,支持生成图表和报告。

使用某些表单,我希望能够使用Tab键在表单中导航。问题是我必须放置选项卡小部件的图层,而ui似乎只有一个全局tab order列表?我希望每个标签有一个单独的tab order,这有意义吗?有可能吗?

我在QT中激活了user并打印了一个屏幕,我知道如何更改顺序,但是如果我还有其他100项内容,则通过按正确的顺序单击所有内容来做到这一点非常麻烦。 / p>

Tabs in tabs

1 个答案:

答案 0 :(得分:0)

您基本上有2个选项。

第一个是从设计器GUI设置所有100多个选项卡。通过使用设计区域右侧所有小部件的概述,可以在“ Tab模式”下在各个选项卡之间切换。请注意,在内部,它仅在选项卡焦点中存储“哪个窗口小部件跟随哪个”。设计器中的编号仅用于使此“链接”可见。但是,此变体的最大问题是,每当您从UI中添加或删除某些内容时,您都必须重做整个过程。

因此,您应该适当地使用第二个变量,并在调用setupUi函数之后在代码中进行制表。这是通过QWidget::setTabOrder函数完成的。当它具有焦点并按下Tab键时,它告诉每个小部件接下来要聚焦的是哪个。一个简单的例子是:

import java.util.*;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.*;
import javax.servlet.http.*;

public class Check
 {


    public static void main(String [] args){
    int found=0;     
    String pass=null;
    Scanner s=new Scanner(System.in);

         System.out.println("PASSWORD: ");
         pass=s.next();

      Connection con;
      boolean st =false;
      try{

         Class.forName("com.mysql.jdbc.Driver");
          try {
               con= DriverManager.getConnection
                                ("jdbc::mysql://localhost:3306/test","root","");

               PreparedStatement ps =con.prepareStatement
                                                    ("SELECT * FROM mytable where Name=?");



              // Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/medicalstore","root","");




              ps.setString(1, pass);
              ResultSet rs =ps.executeQuery();
              if(rs.next())
              do{
                    if(rs.getString(2).equals(pass)){
                      //con.close();
                        System.out.println("FOUND");
                            found=found+1;
                                break;
                  }

              }while(rs.next());
                  }catch(Exception e){

                System.out.println("EXCEPTION CAUGHT: "+e);
                  }



      }catch(Exception e)
      {
          e.printStackTrace();
      }
            if(found==0)`
         System.out.println("NOT FOUND");               
      }

}
相关问题